0

複数のアクティビティを持つアプリを作成しています。アクティビティ 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();
    }
}

それの何が問題なのですか?結果を返さないアクティビティでも発生するため、これだけではありません。

ありがとう!

4

1 に答える 1

0

次のアクティビティを開始するときにアクティビティを明示的に閉じる必要があります。そうでない場合は、戻るボタンでアクセスできる「アクティビティのスタック」にとどまるか、次のアクティビティが閉じます。

アクティビティBを開始した後、アクティビティAで終了を呼び出す必要があります

于 2012-07-06T23:44:20.770 に答える