【发布时间】:2016-02-27 19:32:23
【问题描述】:
我想在我的首选项屏幕底部添加几个按钮,用于设置默认值和恢复默认值。 This 答案未涵盖如何使用 PreferenceFragment 执行此操作。完成此操作的推荐方法是什么。
加载首选项片段的活动:
public class SettingsActivity extends Activity {
@Override
public void onCreate( Bundle savedInstanceState) {
super.onCreate( savedInstanceState);
// load up the preferences fragment
getFragmentManager().beginTransaction().replace( android.R.id.content, new PrefsSettingsFragment()).commit();
}
}
PreferenceFragment 实现:
public class PrefsSettingsFragment extends PreferenceFragment {
@Override
public void onCreate( Bundle savedInstanceState) {
super.onCreate( savedInstanceState);
addPreferencesFromResource( R.xml.preferences);
}
}
preferences.xml:
<?xml version="1.0"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference android:key="edit_text_preference_server_address" android:title="@string/preference_server_address"/>
<SwitchPreference android:key="switch_preference_bat" android:title="@string/preference_bat"/>
<SwitchPreference android:key="switch_preference_comm" android:title="@string/preference_comm"/>
<SwitchPreference android:key="switch_preference_dev_mode" android:title="@string/preference_dev_mode" android:defaultValue="true"/>
</PreferenceScreen>
【问题讨论】:
-
我可能是错的,但不是一样吗?您只需要使用底部的按钮定义自己的布局,
addPreferencesFromResource(...)应该填充列表视图。尽管我不建议将按钮浮动在屏幕底部。除非您的意思是在列表视图的底部? -
啊,你说得对。将 ListView 和 Button 条目添加到我的活动 xml 并在
getFragmentManager().beginTransaction().replace( android.R.id.content, new PrefsSettingsFragment()).commit()之后调用this.setContentView( R.layout.activity_settings)会在底部给我一个我想要的按钮。接下来是弄清楚如何使按钮起作用。 -
就像重置为默认值一样?为 Button 设置
onClickListner()并调用PreferenceManager.setDefaultValues(context, PREFS_FILENAME, 0, R.xml.preferences, true);(如果您不想覆盖已设置的首选项,并且只是第一次设置默认值,则为 false) -
问题是按钮无法点击。我摆弄了一段时间没有成功,所以我决定使用simpler approach。将按钮浮动在屏幕底部也很尴尬。使用这种方法,它们可以出现在首选项列表的末尾。
标签: android android-fragments preferences