日志错误: pastebin.com/YLvmkAd4
FragmentSettings.class:
package com.android.app;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class FragmentSettings extends PreferenceFragment {
[..]
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mListPreference = (ListPreference) getPreferenceManager().findPreference("preference_key");
return inflater.inflate(R.layout.activity_main, container, false);
}
}
activity_main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:fitsSystemWindows="true"
android:layout_height="match_parent">
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar_actionbar"
layout="@layout/toolbar_default"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:clickable="true"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</FrameLayout>
</LinearLayout>
<!-- android:layout_marginTop="?android:attr/actionBarSize"-->
<com.android.app.ScrimInsetsFrameLayout
android:id="@+id/scrimInsetsFrameLayout"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:layout_gravity="start"
app:insetForeground="#4000"
android:elevation="10dp">
<fragment
android:id="@+id/fragment_drawer"
android:name="com.android.app.NavigationDrawerFragment"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:layout="@layout/fragment_navigation_drawer" />
</com.android.app.ScrimInsetsFrameLayout>
</android.support.v4.widget.DrawerLayout>
设备:
Oppo N1, Android 4.2.2
Samsung Galaxy Note 1, Android 5.1.1
我现在花了几个小时来处理这个错误,却找不到它。线索是完全相同的应用程序在Android 5.1.1上完美运行。
MainActivity.java pastebin.com/a2NZLZFm
NavigationDrawerFragment.java pastebin.com/PqTMiPp3
fragment_navigation_drawer.xml pastebin.com/eVeAdv17
答案 0 :(得分:1)
<fragment
android:id="@+id/fragment_drawer"
android:name="com.android.app.NavigationDrawerFragment"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:fitsSystemWindows="true"/>
使用这个,并在你的onCreateView()
android中扩充布局将负责添加它ViewGroup / window等等
这是MainActivity中的这一行
// Set up the drawer.
mNavigationDrawerFragment.setup(R.id.fragment_drawer,
(DrawerLayout) findViewById(R.id.drawer), mToolbar);
删除它,错误就会消失。现在接下来就是让Activity自己处理Drawerlayout
。所以将所有抽屉代码转移到您的活动中并忘记片段中的setup()方法
原因是因为您将片段声明为Activity
中的嵌入,因此android会为您启动它,因此您无需进行设置
希望它有效
答案 1 :(得分:0)
嗯,你们都帮助了我很多,但我自己解决了这个问题;)
我改变了..
public class FragmentSettings extends PreferenceFragment {
public ListPreference mListPreference;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mListPreference = (ListPreference) getPreferenceManager().findPreference("preference_key");
return inflater.inflate(R.layout.activity_main, container, false);
}
}
要.. 强>
public class FragmentSettings extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
并删除此onCreateView
和mListPreference
:)希望这有助于其他人;)
答案 2 :(得分:0)
将此行添加到styles.xml文件中。
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>