私は、異なるスクリーンを表すいくつかのフラグメントを含むアプリケーションを開発しています。フラグメントの1つは、ユーザーがプロフィール画像を変更できるプロフィール編集画面を表します。画像を変更するオプションの1つは、ギャラリーから画像を選択することです。そうするために、私はギャラリーを開く意図を使用します。アプリケーションが終了した後にギャラリーから画像を取得するには?
action_chose_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
// Always show the chooser (if there are multiple options available)
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
});
私がギャラリーを開くと、アプリケーションはバックグラウンドになり、携帯電話のメモリが足りなくなって破壊されます。このインテントは、編集プロファイルのフラグメント内から送信されています。アプリケーションの状態を維持するために、Bunble内の特定のフラグメントを表す文字列をアクティビティ内のonSaveInstanceState()
に保存します。アクティビティが再作成されると、onPostCreate()
メソッド内のバンドルがチェックされ、適切なフラグメントがアクティビティに追加されます。
@Override
protected void onPostCreate(Bundle savedInstanceState) {
Log.i(TAG, "On post create");
if (savedInstanceState.getInt(FRAGMENT_STATE)== MY_STATUS){
state = MY_STATUS;
displayMyStatus();
footer.setSelected(MY_STATUS);
footer.displayButtons();
}else if(savedInstanceState.getInt(FRAGMENT_STATE)== TEAM_STATUS){
state = TEAM_STATUS;
displayTeamStatus();
footer.setSelected(TEAM_STATUS);
footer.displayButtons();
}else if(savedInstanceState.getInt(FRAGMENT_STATE)== MY_PROFILE){
state = MY_PROFILE;
displayMyProfile();
footer.setSelected(MY_PROFILE);
footer.displayButtons();
}else if(savedInstanceState.getInt(FRAGMENT_STATE)== EDIT_PROFILE){
state = EDIT_PROFILE;
displayEditMyProfile();
footer.setSelected(MY_PROFILE);
footer.displayButtons();
}
super.onPostCreate(savedInstanceState);
}
ギャラリーを開くと、自分のデバイスがメモリ不足のためにアクティビティが破棄されます。私がギャラリーからイメージを選択したとき、私の活動は再現され、私は上記の方法で正しいフラグメントを追加します。しかし、私はギャラリーから得た結果で活動のレクリエーションの間に何が起こるか分かりません。
私はonActivityResult()
メソッドを試しましたが、トリガーされません。ギャラリーへのインテントと同じフラグメント内でトリガーされなければならないと思います。
私の質問は次のようになります。
ギャラリーから要求されたと私は活動の内部でそれを取得する方法を再作成されたその画像とどうなりますか?ギャラリーから選択した画像はどこにありますか?