我有一个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);
}
答案 0 :(得分:1)
我认为你应该尝试使用startActivity的startActivityForResult,有一个Link可以帮助你理解这个概念。我想这会对你有帮助
答案 1 :(得分:0)
您可以使用MainActivity
在ActivityB
中保存要更新的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");
}
}
}