android - 如果我按下后退按钮,如何保存活动状态?
问题描述
我有 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);
}
}
我是初学者,但我觉得这里有根本错误的代码,但我找不到。
解决方案
您正在使用共享首选项,认为它将保存您的活动状态,但您的代码所做的只是保存后退按钮的状态以及它是否已启用。尝试保存您想要保留的详细信息,例如名称和对您保存照片的位置的引用。
例如,如果您有一个 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);
推荐阅读
- sql - PIVOT 没有聚合转换 2X2 表
- ios - 处理应用内购买的消耗品退款通知
- java - 为什么 new 用来访问类的构造函数?
- visual-studio-code - VS 代码扩展测试中没有调试器
- mysql - 无法连接到 MySQL docker 容器中的 MySQL 服务?
- apache-camel - 有没有办法在不引发异常的情况下中止路由单的处理?
- node.js - 在 Express 路线中实施“副作用”?
- installation - `ModuleNotFoundError: No module named 'rasa_nlu'` 错误
- git - 服务器启动时用于 git pull 的 systemd
- google-cloud-platform - 数据流写入 GCS 存储桶,但文件名中的时间戳未更改