簡體   English   中英

Android-替換正在運行的片段

[英]Android -replace running fragment

我在我的應用程序中實現了一個導航抽屜,導航抽屜使用片段來推薦,並且當用戶從導航抽屜中選擇某些內容時,只需更改正在運行的片段即可。 每當我嘗試用新片段替換當前片段時,我的應用程序就會崩潰。 這是我用來替換片段的代碼。

Body newFragment = new Body();

            android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
            android.support.v4.app.FragmentTransaction transaction = fragmentManager
                    .beginTransaction();

            // Replace whatever is in the fragment_container view with this
            // fragment,
            // and add the transaction to the back stack
            transaction.replace(R.id.llhome, newFragment);
            transaction.addToBackStack(null);

            // Commit the transaction
            transaction.commit();

編輯:下面是我的logcat

06-18 13:53:10.142: E/AndroidRuntime(17700): FATAL EXCEPTION: main
06-18 13:53:10.142: E/AndroidRuntime(17700): java.lang.NullPointerException
06-18 13:53:10.142: E/AndroidRuntime(17700):    at com.OptimusApps.stayhealthy.Body.<init>(Body.java:31)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at com.OptimusApps.stayhealthy.MainActivity$DrawerItemClickListener.onItemClick(MainActivity.java:129)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at android.widget.AdapterView.performItemClick(AdapterView.java:292)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at android.widget.AbsListView.performItemClick(AbsListView.java:1060)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2516)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at android.widget.AbsListView$1.run(AbsListView.java:3170)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at android.os.Handler.handleCallback(Handler.java:605)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at android.os.Handler.dispatchMessage(Handler.java:92)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at android.os.Looper.loop(Looper.java:137)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at android.app.ActivityThread.main(ActivityThread.java:4575)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at java.lang.reflect.Method.invokeNative(Native Method)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at java.lang.reflect.Method.invoke(Method.java:511)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
06-18 13:53:10.142: E/AndroidRuntime(17700):    at dalvik.system.NativeStart.main(Native Method)

我認為您這一行有一個NPE android.support.v4.app.FragmentTransaction transaction = fragmentManager .beginTransaction();

替換您的android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 通過以下之一:

android.support.v4.app.FragmentManager fragmentManager = getFragmentManager();

讓我知道你的進步;)

暫無
暫無

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

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