我正在开发一个带有偏好的Android应用。我有2个活动:MainActivity和PrefActivity。在MainActivity,我会显示带有偏好值的textview。在PrefActivity,我从ListPreference更改此值。 当我按下PrefActivity中的后退按钮时,它会引导我使用来自首选项的新值文本的MainActivity。但是,如果我再次按下后退按钮,那么它会将我引用旧的MainActivity,其中包含来自首选项的旧值文本。我如何摆脱旧的MainActivity? 从首选项中检索值的代码:
sp = PreferenceManager.getDefaultSharedPreferences(this);
String sharedpreferences = sp.getString("sharedpreference", "");
TextView tv_info = findviewbyid(R.id.tvinfo);
tv_info.settext(sharedpreferences);
答案 0 :(得分:1)
请检查以下逻辑并执行。
您的主要活动
if (id == R.id.action_settings) {
Intent intent = new Intent(MainActivity.this, PrefActivity.class);
intent.putExtra("fwflag","from_menu_item");
startActivity(intent);
}
从oncreate方法中删除共享首选项中设置数据的实现,并将其粘贴到onResume方法:
@Override
public void onResume() {
super.onResume();
sp = PreferenceManager.getDefaultSharedPreferences(this);
String sharedpreferences = sp.getString("sharedpreference", "");
TextView tv_info = findviewbyid(R.id.tvinfo);
tv_info.settext(sharedpreferences);
}
然后在您的PrefActivity
更新以下代码 - 删除onbackpressed()并输入finish()。
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
在PrefFragment下
删除以下代码
Intent intent = new Intent(PrefActivity.this, MainActivity.class);
startActivity(intent);
然后加上
finish();
现在试试。
让我知道查询。