首页 > 解决方案 > 如果我按下后退按钮,如何保存活动状态?

问题描述

我有 2 个活动:在第一个活动中,用户设置了他的名字,然后他单击下一步打开第二个活动,以更新他的个人资料图片。我想要那个,如果他决定回去编辑他的名字,并且如果他已经选择了一张图片,请保存加载了他选择的图片的图像视图的状态。目前发生的情况是,如果我单击返回,然后再次单击下一个,图像视图将设置回默认的个人资料图片图标。

我尝试使用 SharedPreferences,但我一定做错了什么:

 ..........

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_picture);
        LoadPreferences();
    }

    @Override
    public void onBackPressed() {

    SavePreferences();
    super.onBackPressed();
    }

    private void SavePreferences(){
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putBoolean("state", backButton.isEnabled());
        editor.commit(); 
    }

    private void LoadPreferences(){
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        Boolean  state = sharedPreferences.getBoolean("state", true);
        backButton.setEnabled(state);
    }
}

我是初学者,但我觉得这里有根本错误的代码,但我找不到。

标签: android

解决方案


您正在使用共享首选项,认为它将保存您的活动状态,但您的代码所做的只是保存后退按钮的状态以及它是否已启用。尝试保存您想要保留的详细信息,例如名称和对您保存照片的位置的引用。

例如,如果您有一个 EditText,用户输入他们的名字,请尝试以下操作:

String name = yourEditText.getText().toString();

SharedPreferences preferences =PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name", name);
editor.apply();

然后在您的活动的 onResume 中获取值并再次填充您的视图:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Name", null);
yourEditText.setText(name);

推荐阅读