PreferenceActivity 不工作

PreferenceActivity not working

我的应用程序中有一个 PreferenceActivity,因此它可以显示正确的 WebView 并隐藏其他的。它会保存用户保存的设置,但不会隐藏 WebView。这是我的代码。

Preference.xml

<PreferenceCategory android:title="@string/setDefaultDic">
    <ListPreference
        android:defaultValue="naver"
        android:dialogTitle="@string/defaultDic"
        android:entries="@array/defaultDic"
        android:entryValues="@array/defaultDic_values"
        android:key="defaultDic"
        android:title="@string/defaultDic"
        android:summary="@string/summaryDefaultDic"/>
</PreferenceCategory>

这是我的PreferenceActivity.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    addPreferencesFromResource(R.xml.pref_settings);
    setOnPreferenceChange(findPreference("defaultDic"));
}

和我的 MainActivity.java.

private void loadPreferences()
{
    web1 = (WebView) findViewById(R.id.web1);
    web2 = (WebView) findViewById(R.id.web2);
    web3 = (WebView) findViewById(R.id.web3);
    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    String defaultDicLoad;
    defaultDicLoad = sharedPrefs.getString("defaultDic","naver");
    if (defaultDicLoad == "naver"){
        web2.setVisibility(View.GONE);
        web3.setVisibility(View.GONE);
    }
    else if (defaultDicLoad == "daum"){
        web1.setVisibility(View.GONE);
        web3.setVisibility(View.GONE);
    }
    else if (defaultDicLoad == "google"){
        web1.setVisibility(View.GONE);
        web2.setVisibility(View.GONE);
    }
}

onCreate中,有loadPreferences()所以它隐藏了WebView。

您检查 String 相等性不正确。您应该使用 equals() 方法而不是 ==。例如,而不是

if (defaultDicLoad == "naver")

你应该使用

if ("naver".equals(defaultDicLoad))

这适用于所有 String 相等性检查。