我已经编写了一个应用程序,现在,发布后,我的一些用户似乎遇到了一个讨厌的错误。我根本无法复制的一个。
涉及这三个活动。
活动一:超级活动
public abstract class SuperActivity extends Activity
活动二: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);
}
活动三:ListDialogActivity
public class ListDialogActivity extends SuperActivity
我在这里所做的是从 MainActivity 启动 ListDialogActivity 以向用户提供一些选择。一旦他做出选择,ListDialogActivity 将设置一个结果然后完成。在 SuperActivity 我有:
onActivityResult(int requestCode, int resultCode, Intent data) {
//if activityRequestCode was ListDialogRequestCode and the Result was RESULT_OK, then call onListDialogClick(..) with the appropriate values.
}
所以这就是我的 MainActivity 中的 onListDialogClick() 被调用的方式(所以你可以把它想象成一个普通的 onActivityResult())。在那里,少数用户遇到空指针异常,因为 myMemberVariable 为空。
我无法弄清楚这里发生了什么。此外,我正在保存我的实例状态来处理手机旋转,但即使我没有,因为 onCreate 会被调用,它仍然不会为空,它只会丢失它的状态并从初始 Intent 重新创建。
谁能向我解释这是怎么可能的以及这里发生了什么?我是否误解了Android的某些内容?为什么只发生在少数人身上?这可能是什么原因?即使是最微小的建议,我也会非常感激。
非常感谢!