2012-07-26 53 views
2

我有一个PreferenceActivity其中I表示一个设置UI,当我按下第一复选框,然后第二个复选框变得可见。另一方面,当第一个复选框未被选中时,第二个复选框被隐藏(并且默认值为false)。UI清爽在PreferenceActivity

问题是,我检查(或取消选中)第一个复选框时需要更新我的UI屏幕,因为现在使用该代码我需要转到其他活动(例如,当我按下后退按钮时)和然后回去再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> 

谢谢您的时间。

回答

1

好吧然后只需重新启动时复选框被选中/取消的活动:

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

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