加载片段时出现空指针异常

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;
}