为了账号安全,请及时绑定邮箱和手机立即绑定

未调用 Onsavedinstancestate 时写入 outState

未调用 Onsavedinstancestate 时写入 outState

郎朗坤 2021-12-18 09:48:53
我有一个 Activity(0),它从它托管的片段启动另一个 Activity(1)。我在工具栏中设置了向上按钮,从 Activity(1) 和更多的活动返回到 Activity(0), 3,4) 可能由 Activity(1) 初始化。我想为 Activity(0) 保存一个变量,以便在用户从 Activities(1,2,3,4...) 按下向上按钮后重新创建它时,它将返回到它的先前状态。我知道使用 Intent 可以做到这一点,但我不希望我未来的所有活动都必须了解 Activty(0) 的工作原理。是否可以写入 outState 以便通过调用 Onsavedinstancestate 来执行此操作?还是有我不知道的更好的解决方案?
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

在 Activity(0) 中,跟踪一个包含您要保留的信息的私有字段,然后onSaveInstanceState()在 Activity 被销毁时用于保存该字段:


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");


查看完整回答
反对 回复 2021-12-18
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

如果你没有finishActivity 0 。您可以将变量定义为全局变量。


例如 :


Class A extends AppCompatActivity{


 public String myvariable;


 ...


}


查看完整回答
反对 回复 2021-12-18
  • 2 回答
  • 0 关注
  • 181 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号