我有ListPreference,我想用它来启用/禁用多个首选项,这些首选项都在PreferencesScreen / PreferencesCategory下(在同一个活动中),那么如何一次性完成?
是否有一种简单的方法可以根据另一个PreferenceScreen或PreferenceCategory中的ListPreference值禁用或启用分组首选项?
我正在使用eclipse,但是android studio中存在类似的步骤。
完成点击后,如果出现任何错误,请从菜单中重新编译项目:project - >干净。
现在创建的项目有设置,我们可以把它称为MainActivity.java在onOptionsItemSelected方法增加两行是这样的:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
Intent i = new Intent (this, SettingsActivity.class);
startActivity(i);
return true;
}
return super.onOptionsItemSelected(item);
}
运行应用程序并单击操作栏中的设置以打开设置活动
最后会出现设置,并包含3个偏好设置屏幕,如下所示:
看看"将朋友添加到消息"它在pref_general中,我想要的是当用户将其值改为"从不"应该禁用pref_data_sync下的所有首选项,而如果新值是"则始终"然后禁用pref_notification中的所有首选项,否则启用两个屏幕首选项中的所有首选项。
答案 0 :(得分:0)
1。)您在OnSharedPreferenceChangeListener
SettingsActivity.java
public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener
{
//override this method
public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key)
{
}
}
2。)现在检查此方法中“add friends”首选项的值。
public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener
{
//override this method
public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key)
{
String add_friends = PreferenceManager.getDefaultSharedPreferences(context).getString(
"add_friends", null);
if(add_friends.equalsIgnoreCase("never")
{
// Get the screen you want to remove
PreferenceScreen preferenceScreen = (PreferenceScreen) findPreference("pref_screen");
//remove the other screens.
PreferenceGroup preferenceScreenParent = getParent(preferenceScreen);
preferenceScreenParent.removePreference(preferenceScreen);
}
}
}