如何在保持内容完整的同时切换2个活动?

时间:2014-11-29 10:25:19

标签: java android android-activity

我有一个main_activity调用活动B.活动B将更新main_activity上的一些内容,同时更新一些东西。按活动B上的后退按钮会将其恢复为main_activity。我设法保持活动B的内容完整,但不是main_activity(正在重新创建)。我提到this SO question

我想要的是保持main_activity和活动B的内容不变。我怎样才能做到这一点?

这是我的代码:

main_activity在菜单选择上调用活动B:

Intent mIntent = new Intent(mainActivity.this, Activity_B.class);
//startActivityForResult(mIntent);
mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(mIntent);

活动-B背压:

@Override
public void onBackPressed() {
    Intent mIntent = new Intent(Activity_B.this, mainActivity.class);
    mIntent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
    startActivity(mIntent);
}

3 个答案:

答案 0 :(得分:1)

我认为你应该尝试使用startActivity的startActivityForResult,有一个Link可以帮助你理解这个概念。我想这会对你有帮助

startActivityForResult

答案 1 :(得分:0)

您可以使用MainActivityActivityB中保存要更新的SharedPreferences内容,并在MainActivity中获取SharedPreferences中的值并显示。< / p>

//Save something in Activity B
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor e = settings.edit();

e.putString("variableName", "a string value");

e.commit();

//Retrieve in MainActivity
String mContent = settings.getString("variableName", "");
即使退出应用,

SharedPreferences也会存储该值。您还可以从任何其他类访问SharedPreferences中存储的值。

答案 2 :(得分:0)

你需要从主要活动开始你的活动,如下所示

Intent mIntent = new Intent(mainActivity.this, Activity_B.class); 
   startActivityForResult(mIntent,PICK_CONTACT_REQUEST(int));
活动B中的

**(用于通过Intent更新主要活动的设置结果)**

@Override public void onBackPressed() {
 Intent mIntent = new Intent ();
   mIntent.putExtra("some_key",someData);
  mIntent.putExtra("Some_mey2",someData2);
setResult(RESULT_OK,mIntent);
}

**处理来自活动b的main_activity的结果并更新main_activity的ui **“

@Override
protected void onActivityResult(int.    requestCode, int resultCode, Intent data) {
    // Check which request we're     responding to
     if (requestCode ==    PICK_CONTACT_REQUEST) {       // Make sure the request was     successful
  if (resultCode == RESULT_OK) {
someTextfield.settext(data.getStringExtra("Some_key");
     }
    }
}