2

我有一个PreferenceActivity代表设置 UI 的地方,当我按下第一个复选框时,第二个复选框变得可见。另一方面,当第一个复选框未选中时,第二个复选框被隐藏(并将默认值设置为 false)。

问题是,当我选中(或取消选中)第一个复选框时,我需要刷新我的 UI 屏幕,因为现在使用该代码我需要转到另一个 Activity(例如,当我按下后退按钮时)然后返回PreferenceActivity再次以查看我的 UI 上的更改。

PreferenceActivity的代码:

public class SetPreference extends PreferenceActivity implements
        OnSharedPreferenceChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.checkboxpref);
    }

    @Override
    protected void onStart() {
        super.onStart();

        Preference checkbox = findPreference("checkBox_Schedule");

        SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);

        if (prefs.getBoolean("checkBox", true)) {

        } else {

            ((PreferenceGroup) findPreference("category_second"))
                    .removePreference(checkbox);

            SharedPreferences.Editor geted = prefs.edit();
            geted.putBoolean("checkBox_Schedule", false);
            geted.commit();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();

    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        // TODO Auto-generated method stub

    }

}

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <PreferenceCategory
        android:summary="Username and password information"
        android:title="Login information" >
        <EditTextPreference
            android:key="username"
            android:summary="Please enter your login username"
            android:title="Username" />
        <EditTextPreference
            android:inputType="textPassword"
            android:key="password"
            android:summary="Enter your password"
            android:title="Password" />
    </PreferenceCategory>
    <PreferenceCategory
        android:summary="Username and password information"
        android:title="Settings"
        android:key="category_first" >
        <CheckBoxPreference
            android:key="checkBox"
            android:summary="On/Off"
            android:title="Keep me logged in" />

        <ListPreference
            android:entries="@array/listOptions"
            android:entryValues="@array/listValues"
            android:key="listpref"
            android:summary="List preference example"
            android:title="List preference" />
    </PreferenceCategory>
    <PreferenceCategory
        android:summary="schedule"
        android:key="category_second"
        android:title="Schedule" >
        <CheckBoxPreference
            android:key="checkBox_Schedule"
            android:summary="On/Off"
            android:title="Keep me logged in" />
    </PreferenceCategory>

</PreferenceScreen>

感谢您的时间。

4

1 回答 1

1

好的,然后在选中/取消选中复选框时重新启动活动:

startActivity(new Intent(PreferencesActivity.this, PreferencesActivity.class));
finish();

考虑使用onPreferenceSelectedListener第一个复选框来检测选中/取消选中首选项的行为。

于 2012-07-26T16:26:18.337 回答