当前位置: 首页 > 知识库问答 >
问题:

单击“上一步”按钮后重新创建活动状态

谯德元
2023-03-14

当我在onSaveInstanceState方法中将数据成功保存到Bundle时,我无法找出为什么onCreate方法中的savedInstanceState总是为null。当我在AVD上运行我的程序并单击“上一步”按钮(销毁活动),然后通过单击其图标再次创建程序时,保存的状态始终为空。下面是一个测试这个问题的简单程序。

package com.example.myTestApp;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button = (Button)findViewById(R.id.button);
        if(savedInstanceState == null){
            button.setText("No");
        }else{
            button.setText("Yes");
        }
    }

    static final String STATE_SCORE = "playerScore";
    static final String STATE_LEVEL = "playerLevel";
    private int mCurrentScore = 1;
    private int mCurrentLevel = 2;


    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);

        savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
        savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);

    }
}

如果可能的话,告诉我如何解决这个问题。

共有1个答案

席弘图
2023-03-14

这是意料之中的。按“上一步”时,活动将被销毁,其拥有的数据将丢失。在此之后,当您重新打开应用程序时,由于正在创建一个新的、新的实例,因此捆绑包中始终会出现null。

由于某些更改(如旋转)或由于在后台长时间暂停而重新创建活动时,将使用Bundle savedInstanceState。

如果你想坚持一些数据,考虑SysDoupe为小的东西,或者可能是一个数据库(SQLite,领域)或文件大的东西。

 类似资料:
  • 我正试图让JQuery在按下下一个按钮时自动单击该按钮。在互联网上,我发现应该是这样的(查看JQuery部分)。但由于某种原因,它不起作用。 它们必须在同一个代码中吗? 我尝试过的:JQuery: 表单中的按钮1 HTML: 表单中的按钮2 HTML:

  • 我正在创建一个应用程序,它会在打开任何其他应用程序之前询问密码。为了开始我的活动,我创建了一个intent.SETFLAGS(intent.FLAG_ACTIVITY_NEW_TASK)的标志; 锁定/解锁功能正常工作,但当我按下后退按钮时,它没有重定向到主屏幕。

  • 我的应用程序有一个放射群。它有2个单选按钮。 选择单选按钮2 转到电话设置并更改语言。 返回应用程序活动。 再次创建活动。但是选择了radiobutton2。 实际上,当我创建活动时,它应该保留radiobutton1作为默认选择。但是在改变语言并进入我的活动之后,即使运行了onCreate(),它仍然保持以前的状态。 不知何故,状态没有被清除,当我再次创建活动时,我无法将radiobutton1

  • 我是android studio的新手,目前正在创建一个应用程序,它将从SQLite的现有数据库中检索数据。基于我发现的是创建一个布局文件(而不是通过创建新的空活动)来设计如何显示数据。但在布局中,我想要按钮打开新的活动,但不知何故它没有,我没有找到任何解决方案,到目前为止。而影像也没有出现。这是代码: DataPoi.java ListPoiAdapter.java 游乐场.java

  • 单击通知、服务创建新活动和活动创建新服务? 我的应用MainActivity“OnCreate”创建一个“粘性”的服务。 在我的服务中,当有一些通知时,我会发布多个通知。除非用户进入应用程序并阅读通知,否则通知将在那里。在onStartCommand中检查新通知。 按下通知将发送打开MainActivity的意图。 有服务、主要活动和通知。 一段时间后,MainActivity被系统杀死。 单击通

  • 在我点击提交按钮后,我如何使页面刷新或更新页面中的内容?我尝试将(我知道不是React方式,具有相同的结果)放入提交函数(、)中,但POST请求没有得到响应 OpenTickets.js CardConversation.jsx