如何使用旧的首选项数据关闭活动?

时间:2016-09-14 10:42:56

标签: android android-activity android-preferences preferenceactivity

我正在开发一个带有偏好的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);

1 个答案:

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

现在试试。

让我知道查询。