我有一个名为AbstractEntryActivity
. 两个活动ModifyEntryActivity
并AddEntryActivity
扩展它。
我还有一个Application
我用 调用的全局变量,我getApplication
在其中放置了应该是全局的信息。一个列表,在我的情况下。
在我的抽象活动中,我称之为拍摄或挑选这样一张照片的意图:
public void onPickPicture(View view) {
Intent pickIntent = new Intent();
pickIntent.setType("image/*");
pickIntent.setAction(Intent.ACTION_GET_CONTENT);
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Intent chooserIntent = Intent.createChooser(pickIntent,
getString(R.string.dialog_pick_picture_title));
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
new Intent[] { takePhotoIntent });
startActivityForResult(chooserIntent, Constants.SELECT_PICTURE);
}
我还有一种onActivityResult
处理图片的方法。但是在被调用之前,方法onCreate
被调用了。(有时会调用 onActivityResult 而不是 onCreate)
在onCreate
我的抽象活动的第一次调用中,我检查了我的应用程序列表的内容:它是好的(既不是空的,也不是空的)。现在,当我从画廊回来时,我调用 getApplication,而我放入其中的 List 为空。
这是我onCreate
的抽象活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_entry);
// Get all views ...
...
mApp = (MyApplication) getApplication();
Log.d(TAG, "mApp = "+mApp);
Log.d(TAG, "mApp.getList() = "+mApp.getList()); // HERE it is NULL on 2nd call
// Init date
initDate();
// Init all fields
initFields() ;
// getSupportActionBar
...
}
我不明白的是:
- 在
AddEntryActivity
和ModifyEntryActivity
上,onCreate 是相同的(对 super.onCreate 的简单调用) - On
ModifyEntryActivity
,我在第二次调用时得到 mApp.getList = null - 似乎大多数时候,在 中
AddEntryActivity
,mApp.getList 返回正确的值。等等,我又试了一次,但情况并非总是如此
我真的不明白这里发生了什么,以及为什么它的行为并不总是一样。我不确切知道我改变了什么,但在今天之前,它工作正常。
注意如果我不更改图片,一切都很好,并且条目已正确添加/修改
你能帮我找出问题所在吗?