在片段内创建Tabhost

时间:2017-02-01 14:29:15

标签: android android-fragments

我想在片段布局中创建Tabhost,但我有问题 并且我从导航抽屉

导航到此片段
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.amr.fujeraapp, PID: 20705
                  java.lang.NullPointerException
                      at com.example.amr.fujeraapp.MedicineFragment.onCreateView(MedicineFragment.java:28)
                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189)
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
                      at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
                      at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)
                      at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)
                      at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
                      at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)
                      at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)
                      at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)
                      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:5333)
                      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:828)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
                      at dalvik.system.NativeStart.main(Native Method)
I/Process: Sending signal. PID: 20705 SIG: 9
Application terminated.

我不知道问题是什么,但我的代码是

public class MedicineFragment extends android.support.v4.app.Fragment {
    @Nullable
    View myView;
    FragmentTabHost tabhost;
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        myView = inflater.inflate(R.layout.medicinelayout, container, false);
        tabhost = new FragmentTabHost(getActivity());
       tabhost = (FragmentTabHost) tabhost.findViewById(R.id.medicinetab);
        tabhost.setup(getActivity(),getChildFragmentManager(),R.layout.medicinelayout);
        TabHost.TabSpec spec = tabhost.newTabSpec("tag1");
        spec.setIndicator(" بواسطة الفئة");
        spec.setContent(R.id.tab1med);
        tabhost.addTab(spec);
        spec =tabhost.newTabSpec("tag2");
        spec.setContent(R.id.tab2med);
        spec.setIndicator(" بواسطة الشركة");
        tabhost.addTab(spec);
        return tabhost;
    }
}

medicinelayout.xml

<TabHost
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/medicinetab">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
                <LinearLayout
                    android:id="@+id/tab1med"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/tab2med"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">
                </LinearLayout>
            </FrameLayout>
        </LinearLayout>
    </TabHost>
抱歉英语不好

1 个答案:

答案 0 :(得分:0)

尝试更改此行 tabhost =(FragmentTabHost)tabhost.findViewById(R.id.medicinetab) 至 tabhost =(FragmentTabHost)myView.findViewById(R.id.medicinetab)