簡體   English   中英

未顯示PreferenceActivity(空白屏幕)

[英]PreferenceActivity not displayed (Blank Screen)

我按照這些說明創建了PreferenceActivity,但未顯示PereferenceActivity。 活動開始但布局為空白

  1. 我也通過引用developer.android.com在我的應用程序中使用材料設計NavDrawer,但我希望它不會影響
  2. 我正在測試運行Kitkat的設備上的應用程序
  3. 以下是我發布PreferenceActivity “截圖”時會發生什么
  4. Logcat: Could not find method android.preference.PreferenceActivity.onCreate VFY: unable to resolve virtual method 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>

Settings.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>
.....

呼喚意圖

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的更新:根據這一點 ,在重新初始化活動時調用void onCreate (Bundle savedInstanceState, PersistableBundle persistentState) 因此,當您使用startActivityForResultstartActivity啟動一個新的Activity時,不會調用該方法,並且不會執行內部代碼。

出現addPreferencesFromResource(R.xml.app_preference); 是“無法訪問的代碼”

使用protected void onCreate(Bundle savedInstanceState)而不是public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState)

我有同樣的問題,我通過添加行解決了它:

setContentView(R.layout.activity_settings);

這里我的意思是在Settings類的OnCreate方法中添加與SettingsActivity關聯的布局文件:

在此輸入圖像描述

[重新編輯]

主要問題似乎是您正在使用帶有PreferenceActivityPreferenceFragment ,並且您假設PreferenceActivity具有可以直接訪問的操作欄之類的內容。 這可能是一個不好的假設。

PreferenceFragment實際上意味着與“常規” Activity ,而不是與PreferenceActivity

因此,例如,如果您確實想要訪問操作欄,則應使用ActionBarActivity 另請參閱API指南中文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM