【问题标题】:UI refreshing at PreferenceActivity在 PreferenceActivity 刷新 UI
【发布时间】:2012-07-26 15:46:18
【问题描述】:

我有一个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>

感谢您的宝贵时间。

【问题讨论】:

    标签: android interface refresh preferenceactivity


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 2013-12-27
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多