[英]pref screen opens multiple times android
我有一个首选项,可以动态放置字符串并重新加载活动以立即显示更改,如下所示:
void restartActivity() {
Intent intent = getIntent();
finish();
startActivity(intent);
}
问题是当一个特定的值具有特定的值时,我正在更改一些其他的pref值,这导致SHAREDPREFERENCELISTENER一次又一次地运行,导致上述方法一次又一次地运行。
由于某种原因,这导致在顶部创建多个首选项屏幕。
为了清除一些事情,我确实有以下几点:
@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onDestroy() {
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
super.onDestroy();
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
PreferenceScreen screen = this.getPreferenceScreen();
关于如何限制功能的任何想法,以便它不会一遍又一遍地创建屏幕?
重新启动活动后,将布尔值设置为true
。 重新启动完成后,将其设置为false
。 仅在为false
时才调用startActivity
。
声明一个字段: private boolean mRestarted = false;
在restartActivity
:
void restartActivity() {
if(!mRestarted} {
Intent intent = getIntent();
finish();
startActivity(intent);
mRestarted = true;
}
}
并在onCreate:
mRestarted = false;
这将起作用。 但这是刷新值的不好方法...您应该做其他事情来重新加载更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.