android - PreferenceActivity 未显示(黑屏)

标签 android android-preferences preferenceactivity preferencescreen

我正在关注这些 instructions创建一个 PreferenceActivity 但不显示 PereferenceActivity。 Activity 启动但布局为空白

  1. 我也在我的应用程序中使用 Material 设计 NavDrawer 引用 developer.android.com 但我希望它不会影响
  2. 我正在运行 Kitkat 的设备上测试应用程序
  3. 这是我启动 PreferenceActivity 时发生的情况 "screenshot"
  4. 逻辑猫: 找不到方法 android.preference.PreferenceActivity.onCreate VFY: 无法解析虚拟方法 950: Landroid/preference/PreferenceActivity;.onCreate(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V

代码:

app_preference.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Settings">
    <ListPreference
            android:title="Timer"
            android:summary="@string/timer_summary"
            android:key="prefTime"
            android:defaultValue="30"
            android:entries="@array/prefTime"
            android:entryValues="@array/prefTimeValue"/>
    <SwitchPreference
            android:title="Shuffle"
            android:summary="@string/shuffle_summary"
            android:defaultValue="false"
            android:key="prefToggleShuffle"/>
    <SwitchPreference
            android:title="Allow over Wifi-only"
            android:summary="@string/wifi_only_summary"
            android:defaultValue="false"
            android:key="prefWifiOnly"/>
    <Preference
            android:title="Restore Defaults"
            android:summary="@string/restore_summ"/>
    <Preference
            android:title="Clear Data"
            android:summary="@string/shuffle_summary"/>
</PreferenceCategory>

设置.java

public class Settings extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
}

public static class SettingsFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.app_preference);
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            break;
    }
    return super.onOptionsItemSelected(item);
}

Mainfest.xml

.....
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21"/>
<activity android:name=".preferences.Settings>
        <intent-filter>
            <category android:name="android.intent.category.PREFERENCE"/>
        </intent-filter>
        <meta-data android:name="android.support.PARENT_ACTIVITY"
                   android:value=".activity.MainActivity"/>
    </activity>
.....

调用 Intent

case R.id.action_setting:
            Intent intent = new Intent(this, Settings.class);
            startActivityForResult(intent, RESULT_SETTINGS);//RESULT_SETTINGS = 1
            break;

最佳答案

删除onCreate方法中的第二个参数:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Aviel Fedida 更新: 根据this , void onCreate (Bundle savedInstanceState, PersistableBundle persistentState) 在重新初始化 Activity 时调用。 因此,当您使用 startActivityForResultstartActivity 启动一个新 Activity 时,不会调用该方法,也不会执行其中的代码。

出现黑屏是因为 addPreferencesFromResource(R.xml.app_preference); 是“unreachable code”

关于android - PreferenceActivity 未显示(黑屏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227112/

相关文章:

android - 资源文件夹中的错误 - Android/Eclipse

android - 在 android 中有什么方法可以在卸载后保留 SharedPreferences

android - SharedPreferences 的最佳实践

android - 如何动态设置偏好值?

android - PreferenceActivity 可以自定义它处理触摸的方式吗?

android - 安排一个 IntentService

android - 如何在android中延迟加载共享库

android - 如何从 PreferenceActivity 创建 Android App Widget 作为配置 Activity

android - 如何在google play控制台正确填写权限声明表?

安卓。偏好 Activity 。列表首选项。如何更改 ListPreference 的背景颜色?