NPE错误膨胀类片段:NavigationDrawerFragment
问题描述:
当我在Android Studio中创建新的导航抽屉活动时,基本示例运行完美。我已经更改了几行以整合Material Design和v4 - v7支持,因此应用程序中断。我还在Firebase的一些基本代码中加入了与Google+进行简单认证的代码。NPE错误膨胀类片段:NavigationDrawerFragment
启动该应用程序将返回一个运行时异常和“错误膨胀类片段”消息。
我在猜测NPE是来自未被夸大的观点,但我不知道这是怎么回事。
下面是我的logcat,我的活动和我的布局。任何帮助或指导,将不胜感激。
logcat的:
11-24 16:29:26.735 6127-6127/com.starkenglish E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.starkenglish, PID: 6127
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.starkenglish/com.starkenglish.MainActivity}: android.view.InflateException: Binary XML file line #19: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2212)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:343)
at android.app.Activity.setContentView(Activity.java:1929)
at com.starkenglish.MainActivity.onCreate(MainActivity.java:110)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.starkenglish.NavigationDrawerFragment.onCreateView(NavigationDrawerFragment.java:101)
at android.app.Fragment.performCreateView(Fragment.java:1700)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:866)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040)
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1142)
at android.app.Activity.onCreateView(Activity.java:4786)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:343)
at android.app.Activity.setContentView(Activity.java:1929)
at com.starkenglish.MainActivity.onCreate(MainActivity.java:110)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
为了保持这个贴子干净,我已经发布我的代码在GitHub上GIST。
- MainActivity.java: https://gist.github.com/markbratanov/a94291edaf02b0b236d3
- NavigationDrawerFragment.java: https://gist.github.com/markbratanov/92bb583f14604b68b34d
- fragment_main.xml: https://gist.github.com/markbratanov/d1bda8b3c99d47e0257c
- fragment_navigation_drawer.xml: https://gist.github.com/markbratanov/5f5e334e40e253736e49
如果缺少代码/文件,请让我知道,我会立即包括它。
答
您的主要活动延伸FragmentActivity,为了得到一个动作条
这是在你的NavigationDrawerFragment line 101
上市,就像错误说
mDrawerListView.setAdapter(new ArrayAdapter<String>(
getActivity().getActionBar().getThemedContext(), <== this is the null part
android.R.layout.simple_list_item_activated_1,
android.R.id.text1,
new String[]{
getString(R.string.title_section1),
getString(R.string.title_section2),
getString(R.string.title_section3),
}));
你需要从应用程序兼容性延长ActionBarActivity从文档
报价
ActionBarCompat包含一个活动类,您的活动 类应该扩展:ActionBarActivity。此类本身从FragmentActivity扩展 ,因此您可以继续在 应用程序中使用片段。
谢谢你的帮助。我已经改变了, 'MainActivity MainActivity扩展活动'公共类MainActivity扩展ActionBarActivity在MainActivity.java 仍然收到同样的错误,我不理解你吗? – markbratanov 2014-11-24 23:05:16
你可以将我粘贴在我的代码部分onActivityCreated,而不是在onCreateView – 2014-11-24 23:24:45
也行不通。 我注意到,当我改变风格。XML返回到原始模板,它工作正常。当我尝试使用新的材质设计appcompat时,它会失败? – markbratanov 2014-11-24 23:33:22