加载片段时出现空指针异常
Null pointer exception when loading fragment
我正在 android 编程课程中完成我的期末项目(所以我还是个新手)。我正在构建自己的媒体播放器。我实现了一个包含不同媒体类型(视频、音频、流等)的抽屉,我想要的是让每个点击的项目加载一个片段来处理任务。我正在处理的第一个是音频片段。这是列表中的第二个,但我认为它比视频更容易。反正。当我单击 "audio" (picture link) 时,出现空指针异常。几天来我一直在努力弄清楚,但现在我真的在浪费宝贵的时间。我做错了什么?
因为涉及的代码相当多,所以我将使用片段(如果人们喜欢我实际上将所有代码粘贴在这里,请告诉我,我会更改它)。
主要活动:http://pastebin.com/zsXuZHkN
片段音频:http://pastebin.com/77XsBbu9
列表适配器音频:http://pastebin.com/cfu7azP0
logact 日志:
09-13 18:31:33.056 11959-11959/com.example.ref_apps.winnerplayer E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.ref_apps.winnerplayer, PID: 11959
java.lang.NullPointerException
at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:414)
at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:449)
at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:441)
at com.example.ref_apps.winnerplayer.MainActivity.selectDrawerItem(MainActivity.java:118)
at com.example.ref_apps.winnerplayer.MainActivity.onItemClick(MainActivity.java:64)
at android.widget.AdapterView.performItemClick(AdapterView.java:299)
at android.widget.AbsListView.performItemClick(AbsListView.java:1153)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3065)
at android.widget.AbsListView.run(AbsListView.java:4031)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
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:825)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
at dalvik.system.NativeStart.main(Native Method)
显然还有其他文件,但我不认为它们是罪魁祸首。我会按要求添加文件。
谢谢!!
在fragment replace中添加addToBackstack(null)后试试
(或)
检查 backStack 计数,您应该在替换另一个片段之前清除所有计数。
在您的 Activity 中,您正在导入 android.support.v4.app.Fragment
并且您的片段是 android.app.Fragment
。这就是为什么您的演员表在调用 newInstance()
后失败并且您的片段为空。您的 ListFragment
也是如此。
您还需要在片段中实施 newInstance()
。
public static Fragment newInstance()
{
FragmentAudio myFragment = new FragmentAudio();
return myFragment;
}
我正在 android 编程课程中完成我的期末项目(所以我还是个新手)。我正在构建自己的媒体播放器。我实现了一个包含不同媒体类型(视频、音频、流等)的抽屉,我想要的是让每个点击的项目加载一个片段来处理任务。我正在处理的第一个是音频片段。这是列表中的第二个,但我认为它比视频更容易。反正。当我单击 "audio" (picture link) 时,出现空指针异常。几天来我一直在努力弄清楚,但现在我真的在浪费宝贵的时间。我做错了什么?
因为涉及的代码相当多,所以我将使用片段(如果人们喜欢我实际上将所有代码粘贴在这里,请告诉我,我会更改它)。
主要活动:http://pastebin.com/zsXuZHkN
片段音频:http://pastebin.com/77XsBbu9
列表适配器音频:http://pastebin.com/cfu7azP0
logact 日志:
09-13 18:31:33.056 11959-11959/com.example.ref_apps.winnerplayer E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.ref_apps.winnerplayer, PID: 11959
java.lang.NullPointerException
at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:414)
at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:449)
at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:441)
at com.example.ref_apps.winnerplayer.MainActivity.selectDrawerItem(MainActivity.java:118)
at com.example.ref_apps.winnerplayer.MainActivity.onItemClick(MainActivity.java:64)
at android.widget.AdapterView.performItemClick(AdapterView.java:299)
at android.widget.AbsListView.performItemClick(AbsListView.java:1153)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3065)
at android.widget.AbsListView.run(AbsListView.java:4031)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
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:825)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
at dalvik.system.NativeStart.main(Native Method)
显然还有其他文件,但我不认为它们是罪魁祸首。我会按要求添加文件。
谢谢!!
在fragment replace中添加addToBackstack(null)后试试
(或)
检查 backStack 计数,您应该在替换另一个片段之前清除所有计数。
在您的 Activity 中,您正在导入 android.support.v4.app.Fragment
并且您的片段是 android.app.Fragment
。这就是为什么您的演员表在调用 newInstance()
后失败并且您的片段为空。您的 ListFragment
也是如此。
您还需要在片段中实施 newInstance()
。
public static Fragment newInstance()
{
FragmentAudio myFragment = new FragmentAudio();
return myFragment;
}