如何使用旧的偏好数据关闭 activity?

How to close activity with old preferences data?

我正在开发一个带有首选项的 android 应用程序。我有 2 个活动:MainActivity 和 PrefActivity。在 MainActivity 中,我显示带有偏好值的文本视图。在 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);

请检查以下逻辑并执行。

你的 MainActivity

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(); 

现在试试。

如有疑问请联系我。