Tôi đã viết một Ứng dụng và bây giờ, đăng bản phát hành, một số người dùng của tôi dường như đang gặp phải một lỗi khó chịu. Một điều mà tôi đơn giản là không thể tái tạo.Android onActivityResult. Biến thành viên đôi khi bị vô hiệu
Tham gia vào đây là ba Hoạt động.
Hoạt động 1: SuperActivity
public abstract class SuperActivity extends Activity
Hoạt động 2: MainActivity
public class MainActivity extends SuperActivity {
private MyObject myMemberVariable;
@Override
public void onCreate(Bundle savedInstanceState) {
//Get the intent that started this activity. I am always providing Extras, so this is never null.
Bundle bundle = getIntent().getExtras();
//Set stuff in myMemberVariable from these extras. This never fails either.
myMemberVariable = BundleLoader.loadFromBundle(bundle);
}
@Override
public void onListDialogClick(int requestCode, String[] options, int position, String extra) {
//THIS is the place where, according to my stacktrace from the DeveloperConsole, the null pointer arises.
myMemberVariable.setXY(position);
}
Hoạt động 3: ListDialogActivity
public class ListDialogActivity extends SuperActivity
là tôi bắt đầu Những gì tôi đang làm gì ở đây các ListDialogActivity từ MainActivity để giới thiệu cho người dùng một vài lựa chọn. Sau khi thực hiện lựa chọn, ListDialogActivity sẽ thiết lập kết quả và sau đó kết thúc. Trong SuperActivity Tôi đã có:
onActivityResult(int requestCode, int resultCode, Intent data) {
//if activityRequestCode was ListDialogRequestCode and the Result was RESULT_OK, then call onListDialogClick(..) with the appropriate values.
}
Vì vậy, đây là cách onListDialogClick() trong MainActivity tôi được gọi (Vì vậy, bạn có thể chỉ cần nghĩ về nó như một onActivityResult bình thường()). Ở đó, một số ít người dùng gặp ngoại lệ con trỏ null vì myMemberVariable là null.
Tôi không thể hiểu được điều gì đang xảy ra ở đây. Ngoài ra, tôi đang lưu trạng thái cá thể của mình để xử lý xoay vòng điện thoại, nhưng ngay cả khi tôi không, vì onCreate sẽ bị thu hồi, nó vẫn sẽ không bị rỗng, nó sẽ chỉ mất trạng thái của nó và được tái tạo từ Intent ban đầu.
Bất cứ ai có thể vui lòng giải thích cho tôi điều này là có thể và những gì đang xảy ra ở đây? Tôi có hiểu nhầm điều gì đó từ Android không? Tại sao nó chỉ xảy ra với một vài người? Điều gì có thể là lý do cho điều này? Tôi thực sự rất biết ơn vì ngay cả gợi ý nhỏ nhất.
Cảm ơn bạn rất nhiều!
Mọi yếu tố chung với thiết bị này đang diễn ra? – JRaymond
Tôi chưa tìm thấy một yếu tố chung (tôi chắc chắn rằng nó đã xảy ra với một ai đó với một Galaxy S2 với CM9 và một ai đó với HTC một x.) Nhưng khác hơn là tôi không biết vì dev console không chỉ cho tôi các thiết bị mà lỗi phát sinh. – metter
nơi 'myMemberVariable' được khởi tạo? Trong mã tôi có thể thấy nó phải luôn luôn là 'null' bởi vì nó bằng với' MyObject myMemberVariable = null; ' – zapl