と呼ばれる抽象的なアクティビティがありAbstractEntryActivity
ます。2つのアクティビティ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
呼び出しで、アプリケーションのリストの内容を確認します。問題ありません (null でも空でもない)。さて、ギャラリーから戻ってきたときに getApplication を呼び出すと、入れた List は null です。
onCreate
これがAbstractアクティビティからの私のものです:
@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 への単純な呼び出し)。 - で、 2
ModifyEntryActivity
回目の呼び出しで mApp.getList = null を取得します - ほとんどの場合
AddEntryActivity
、mApp.getList は正しい値を返すようです。待って、もう一度試してみましたが、常にそうであるとは限りません
ここで何が起こっているのか、なぜ常に同じように動作するとは限らないのか、私には本当にわかりません。何を変更したのか正確にはわかりませんが、今日までは正しく機能していました。
注意: 写真を変更しなければ問題なく、エントリは正しく追加/変更されています
何が問題なのかを教えてください。