我试图让偏好屏幕加载,但似乎没有显示。我可以加载Activity,但我看不到实际的偏好。我在StackOverflow上尝试了其他解决方案,例如将setContentView(R.layout.activity_settings);
添加到SettingsActivity,但没有成功。
SettingsActivity.java
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
public class SettingsActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
}
的preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/pref_start"
android:key="pref_key_storage_settings">
<CheckBoxPreference
android:key="pref_key_auto_exit"
android:summary="@string/pref_summary_exit"
android:title="@string/pref_title_exit"
android:defaultValue="false"/>
</PreferenceCategory>
</PreferenceScreen>
SettingsFragment.java
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.view.LayoutInflater;
import android.view.ViewGroup;
public class SettingsFragment extends PreferenceFragment {
public SettingsFragment() {
}
public void onCreate(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
答案 0 :(得分:0)
由于您的活动延伸ActionBarActivity
,而FragmentActivity
又扩展Fragment
,因此只能使用支持PreferenceFragment
及其后代。但是,Fragment
来自原生PreferenceActivity
。即使您的最低SDK高于11,这两个也无法互操作。
您有两种选择:
1)转到原生偏好
您的活动最好延长PreferenceFragment
。然后,您可以继续使用当前的PreferenceFragment
。缺点是您必须分别处理API 11+(或14+)和API 21+的样式(但可以完成)。 Full documentation on native preferences
2)EASY:全力支持
有一个社区制作了import android.preference.PreferenceFragment;
的后端(实际上有多个,但我使用了这个),可以在这里找到:https://github.com/kolavar/android-support-v4-preferencefragment
您应该能够在将库导入项目并更改导入语句后立即编译,而不是import android.support.v4.preference.PreferenceFragment;
而是PreferenceActivity
。
如何决定
如果您将API定位到11以下并且您需要操作栏,则除了选项2之外别无选择。如果您不需要{{1}}糖标题,主要详情视图,此选项也是最佳选择在大屏幕上等(再次参见文档)