我正在编写一个包含多项活动的应用。活动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();
}
}
有什么问题?它发生在一个不返回结果的活动中,所以它不仅仅是这个。
谢谢!
答案 0 :(得分:0)
您需要在启动下一个活动时明确关闭您的活动,否则,它将保留在您可以使用后退按钮访问的“活动堆栈”中或下一个活动关闭时。
启动活动B后,您需要在活动A上调用finish