未调用Onsavedinstancestate时写入outState

时间:2018-10-30 11:08:14

标签: java android

我有一个Activity(0),它从其托管的片段开始另一个Activity(1)。我已经在工具栏中设置了“向上”按钮,以从Activity(1)返回到Activity(0),还有其他一些Activity (2,3,4)可能由Activity(1)初始化。

我想为Activity(0)保存一个变量,以便在用户按下Activity(1,2,3,4 ...)中的Up按钮后重新创建它时,它将返回到其先前的状态。 / p>

我知道使用Intents可以做到这一点,但是我不希望以后的所有Activity都必须了解Activty(0)的工作原理。

是否可以通过调用Onsavedinstancestate来写入outState?还是有我不知道的更好的解决方案?

2 个答案:

答案 0 :(得分:1)

在活动(0)中,跟踪一个私有字段,其中包含您要保留的信息,如果活动被破坏,请使用onSaveInstanceState()保存该字段:

private String myInfo;

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("KEY_MY_INFO", myInfo);
}

您没有说要保存什么样的信息或要从哪里保存信息,但是这个通用模板应该可以工作。您可能需要公开一个setter方法:

public void setMyInfo(String myInfo) {
    this.myInfo = myInfo;
}

如果您要尝试从片段开始工作,则可能需要投射活动:

MyActivity activity = (MyActivity) getActivity();
activity.setMyInfo("hello world");

答案 1 :(得分:0)

如果您没有finish活动0。您可以将变量定义为全局变量。

例如:

Class A extends AppCompatActivity{

 public String myvariable;

 ...

}