清空 PreferenceActivity 虽然添加了 PreferenceFragment
Empty PreferenceActivity though a PreferenceFragment was added
我遇到了一个非常简单的问题:我正在尝试在我的应用程序中构建一个首选项屏幕,并且我想使用新的、现在标准的 PreferenceFragment 方法来完成它。
这是我的偏好 xml:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/prefs_interface_settings">
<SwitchPreference
android:key="show_average"
android:title="Show average length of work day"
android:defaultValue="false"
android:summary="Display the calculated average in the app title" />
<EditTextPreference
android:key="edittext_preference"
android:title="@string/workday_duration_prefs_title"
android:summary="summary_edittext_preference"
android:defaultValue="8"
android:dialogTitle="dialog_title_edittext_preference" />
</PreferenceCategory>
</PreferenceScreen>
这是我的 SettingsActivity
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.widget.Toast;
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
}
}
最后 - 这是我的 SettingsFragment:
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
addPreferencesFromResource(R.xml.app_preferences); //Gets settings from XML
}
}
}
当我 运行 应用程序时,如果我打开说 activity 我得到一个空的,就像片段由于某种原因未初始化 - 或未显示一样。但是代码太简单了...我就是搞不懂我做错了什么!
谢谢大家的帮助
getArguments() used only when you create <preference-headers/>
。在 preference-header XML 文件的 <extra/>
元素中声明的参数。声明后,您将在 PreferenceFragment
:
内调用此代码
String settings = getArguments().getString("settings");
if (settings.equals("myArgument")) {
addPreferencesFromResource(R.xml.settings_wifi);
}
但是,由于你没有使用<preference-headers/>
,所以你只需要在PreferenceFragment
中调用这段代码:
addPreferencesFromResource(R.xml.app_preferences);
我遇到了一个非常简单的问题:我正在尝试在我的应用程序中构建一个首选项屏幕,并且我想使用新的、现在标准的 PreferenceFragment 方法来完成它。
这是我的偏好 xml:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/prefs_interface_settings">
<SwitchPreference
android:key="show_average"
android:title="Show average length of work day"
android:defaultValue="false"
android:summary="Display the calculated average in the app title" />
<EditTextPreference
android:key="edittext_preference"
android:title="@string/workday_duration_prefs_title"
android:summary="summary_edittext_preference"
android:defaultValue="8"
android:dialogTitle="dialog_title_edittext_preference" />
</PreferenceCategory>
</PreferenceScreen>
这是我的 SettingsActivity
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.widget.Toast;
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
}
}
最后 - 这是我的 SettingsFragment:
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
addPreferencesFromResource(R.xml.app_preferences); //Gets settings from XML
}
}
}
当我 运行 应用程序时,如果我打开说 activity 我得到一个空的,就像片段由于某种原因未初始化 - 或未显示一样。但是代码太简单了...我就是搞不懂我做错了什么!
谢谢大家的帮助
getArguments() used only when you create <preference-headers/>
。在 preference-header XML 文件的 <extra/>
元素中声明的参数。声明后,您将在 PreferenceFragment
:
String settings = getArguments().getString("settings");
if (settings.equals("myArgument")) {
addPreferencesFromResource(R.xml.settings_wifi);
}
但是,由于你没有使用<preference-headers/>
,所以你只需要在PreferenceFragment
中调用这段代码:
addPreferencesFromResource(R.xml.app_preferences);