2017-02-01 4 views
0

Я хотел бы создать Tabhost внутри макета фрагмента, но у меня есть проблема и я перейти к этому фрагменту из навигационного ящикаСоздание 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> 

жаль плохой английский

ответ

0

Попробуйте изменить эту строку tabhost = (FragmentTabHost) tabhost.findViewById (R.id.medicinetab) к tabhost = (FragmentTabHost) myView.findViewById (R.id.medicinetab)

+0

E/AndroidRuntime : FATAL EXCEPTION: main Процесс: com.example.amr.fujeraapp, PID: 23107 java.lang.ClassCastException: android.widget.TabHost нельзя передать в android.support.v4.app.FragmentTabHost –

+0

Как вы можете видеть из ошибка типов просмотра не совпадает. В medicinelayout xml. Замените TabLayout на android.support.v4.app.FragmentTabHost. – Ashish

+0

как насчет tabhost.setup (getActivity(), getChildFragmentManager(), R.layout.medicinelayout); следует заменить layout.medicinlayout на вкладку id.medicine? –

Смежные вопросы