完成一项活动让我回到了我的第一项活动

时间:2012-07-06 23:02:04

标签: java android

我正在编写一个包含多项活动的应用。活动A调用活动B,不期望结果。然后,如果按下了一个按钮,则使用活动C启动A活动结果。当活动C完成时,它会使用所需的所有额外内容并完成一个意图。问题是,当它调用this.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();
    }
}

有什么问题?它发生在一个不返回结果的活动中,所以它不仅仅是这个。

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要在启动下一个活动时明确关闭您的活动,否则,它将保留在您可以使用后退按钮访问的“活动堆栈”中或下一个活动关闭时。

启动活动B后,您需要在活动A上调用finish