首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拯救国家的问题,极其困难

拯救国家的问题,极其困难
EN

Stack Overflow用户
提问于 2014-11-21 02:55:06
回答 1查看 30关注 0票数 0

我无论如何也找不出我做错了什么。所以这是代码,我的onSaveInstanceState根本没有保存,所以为了简单起见,我专注于一件事,试图让它工作,但仍然一无所获。

代码语言:javascript
复制
    @Override
     public void onSaveInstanceState(Bundle outState) {
      // TODO Auto-generated method stub
      super.onSaveInstanceState(outState);
      outState.putString("test_time", vitTimeSet1.getText().toString());

}

为了让你们知道每一个细节,我也有一个后退按钮,我用它来测试实例是否可以恢复。这就是了。

代码语言:javascript
复制
    public boolean onOptionsItemSelected(MenuItem item){
    Intent myIntent = new Intent(getApplicationContext(), Tools.class);
    startActivityForResult(myIntent, 0);
    finish();

    return true;

如您所见,此工具栏上的back按钮调用finish();,这样当您返回时,就不会有此活动的多个实例在运行。现在,onCreate中的代码调用TextView来设置保存的字符串的文本。

代码语言:javascript
复制
protected void onCreate(Bundle outState) {
    // TODO Auto-generated method stub
    super.onCreate(outState);
      if (outState != null){
          vitTimeSet1.setText(outState.getString("test_time"));

          }else{

在按下back按钮,然后重新打开activity时,在存储vitTimeSet1时,TextView将保持为从未保存过。那么,您看到了哪些问题会阻止它被保存然后恢复呢?

编辑:后退按钮带你回到一个菜单(我为工具栏创建的后退按钮)。因此,当您按下它返回到上面的活动时,它会打开一个新实例,而不会被恢复。我在单击back按钮时调用finish();,因此如果我删除它,则在单击此按钮打开上面的活动时它所做的一切

代码语言:javascript
复制
        vitals = (Button) findViewById(R.id.vitals);
    vitals.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            try{
            Class goVitals = Class.forName("com.vexos.emspal.Vitals");
            Intent goIntent = new Intent(Tools.this, goVitals);
            startActivity(goIntent);
            }catch(ClassNotFoundException e){
                e.printStackTrace();
            }
            finish();
        }
    });

它会打开一个新实例,但仍然没有保存任何值。它不会使用保存的值恢复旧实例。但是,如果单击back按钮终止此新实例,则会显示具有存储值的已保存实例。finish();似乎是唯一让它不这样做的方法,但它会杀死活动,所以可能不会保存东西。

EN

回答 1

Stack Overflow用户

发布于 2014-11-21 03:01:01

尽量不要使用finish()。根据http://developer.android.com/training/basics/activity-lifecycle/recreating.html

当您的活动由于用户按下Back或该活动自行完成而被销毁时,系统对该活动实例的概念将永远消失,因为该行为表明不再需要该活动。

编辑:当导航到新的活动,然后返回并恢复保存的状态时,活动实例最常被保存。再次启动相同的活动不应恢复到以前的状态,而应重新开始。

编辑:在每个任务必须支持同一活动的多个实例的情况下,可以在传递给startActivity的意图中发送状态包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27047356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档