繁体   English   中英

Pref屏幕多次打开android

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM