Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击“上一步”按钮后重新创建活动状态_Android - Fatal编程技术网

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

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

当我在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);

    }
}

如果可能,请告诉我如何解决此问题。

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

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


如果你想保留一些数据,考虑SytPosiple为小的东西,或者可能是一个数据库(SQLite,Valite)或大文件的文件。< /P>所以我如何存储数据在这样的情况下?在SyrdPoad中保存数据。不要忘记标记为解决的,这是一种欣赏帮助的方式;