複数のアクティビティを持つアプリを作成しています。アクティビティ A は、結果を期待せずにアクティビティ B を呼び出します。次に、ボタンが押されると、B はアクティビティ C で ActivityForResult を開始します。アクティビティ C が完了すると、必要なすべてのエクストラを使用してインテントを作成し、終了します。問題は、this.finish() または単に finish() を呼び出すと、アクティビティ A に戻ってしまうことです。アクティビティ B の onActivityResult は呼び出されません。なにが問題ですか?
アクティビティ A: アクティビティ B を開始します
Intent in = new Intent(ccstart.this,mainmenu.class);
in.putExtra("uid",loginresponse);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("usr",text_user.getText().toString());
// Commit the edits!
editor.commit();
startActivity(in);
アクティビティ B: アクティビティ C を開始して結果を得る
Intent intent = new Intent(mainmenu.this,filebrowser.class);
startActivityForResult(intent,0);
アクティビティ C: 返品ステートメント
Intent result = new Intent();
result.putExtra("fname", file.getAbsolutePath());
this.setResult(Activity.RESULT_OK, result);
finish();
アクティビティ B: アクティビティ c の結果に基づいて...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// If the request went well (OK) and the request was PICK_CONTACT_REQUEST
if (resultCode == Activity.RESULT_OK && requestCode==0) { //upload a file
final String fname = data.getExtras().getString("fname");
final SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); //Load settings
final String uid = settings.getString("uid", "");
new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
doFileUpload(fname, uid);
}
}).start();
}
}
それの何が問題なのですか?結果を返さないアクティビティでも発生するため、これだけではありません。
ありがとう!