0

我正在编写一个具有多个活动的应用程序。活动 A 调用活动 B,不期待结果。然后,如果按下按钮 B 将使用 Activity C 启动ActivityForResult。当 Activity 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 回答