有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在保持内容完整的同时在两个活动之间切换?

我有一个main_活动,叫做activity B。activity B将更新main_活动的一些内容,同时更新自身的一些内容。按下活动B上的“后退”按钮将使其返回主活动。我设法保持了活动B的内容完整,但没有保留主要的_活动(正在重新创建)。我提到this SO question

我想要的是保持主要活动和活动B的内容完整。我怎样才能做到这一点

这是我的代码:

主活动调用菜单上的活动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);
}

共 (2) 个答案

  1. # 1 楼答案

    你需要从以下主要活动开始你的活动

    Intent mIntent = new Intent(mainActivity.this, Activity_B.class); 
       startActivityForResult(mIntent,PICK_CONTACT_REQUEST(int));
    

    **在活动B中(用于设定结果,以便通过意图更新您的主要活动)**

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

    **处理活动b中的主_活动的结果,并更新主_活动的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");
         }
        }
    }
    
  2. # 2 楼答案

    您可以使用SharedPreferences将要更新的MainActivity内容保存在ActivityB中,并在MainActivity中从SharedPreferences中获取值并显示

    //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中存储的值