2012-03-02 10 views
8

Próbuję dodać tabhost wewnątrz fragmentu, ale bez względu na to, co próbuję, nie jestem w stanie go wstawić. Być może brakuje mi tutaj pewnych podstaw. Oto kod mojej klasy TabFragment. Który zwraca widok.jak dodać tabhost w fragmentach

public class TabFragment extends Fragment{ 

    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
    } 
    private TabHost mTabHost; 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 
    { 
      View view = inflater.inflate(R.layout.tabmain, container, false); 
      mTabHost = (TabHost) view.findViewById(android.R.id.tabhost); 
      mTabHost.setup();//very important to call this 
      TabHost.TabSpec tab = mTabHost.newTabSpec("my tab content"); 
      tab.setIndicator("my tab content"); 
      mTabHost.addTab(tab); 
     return view; 
    } 
} 
+1

http://android.codeandmagic.org/2011/07/android-tabs-with-fragments/ ten link może być pomocny – Triode

+0

nie robi. używają fragmentów do tworzenia zakładek i to nie mój requmemnt plus jeden z moich fragmentów musi b static. Potrzebuję wstawić tabhost w jakiś sposób – sohil

+0

@Hohil zostałeś rozwiązany ... utknął w tym samym .. możesz pomóc .. sprawdź tutaj http://stackoverflow.com/questions/28106944/how-to-add-tabhost- z nawigacją-szufladą? noredirect = 1 # comment44592501_28106944? –

Odpowiedz

18

Z poziomu API 17, teraz jest to możliwe:

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentTabHost; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

// This class is the 3rd fragment in my ViewPager, 
// to which I wanted to add 2 tabs.... 
public class TabHostParentFragment extends Fragment { 
private FragmentTabHost mTabHost; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
mTabHost = new FragmentTabHost(getActivity()); 
mTabHost.setup(getActivity(), getChildFragmentManager(), R.layout.my_parent_fragment); 

Bundle arg1 = new Bundle(); 
arg1.putInt("Arg for Frag1", 1); 
mTabHost.addTab(mTabHost.newTabSpec("Tab1").setIndicator("Frag Tab1"), 
    MyNestedFragment1.class, arg1); 

Bundle arg2 = new Bundle(); 
arg2.putInt("Arg for Frag2", 2); 
mTabHost.addTab(mTabHost.newTabSpec("Tab2").setIndicator("Frag Tab2"), 
    MyNestedFragment2.class, arg2); 

return mTabHost; 
} 

@Override 
public void onDestroyView() { 
super.onDestroyView(); 
mTabHost = null; 
} 
} 

Upewnij się zaktualizować-support-v4.jar android plik, jak to zrobił automatycznej aktualizacji dla mnie, gdy pobrane poprzez Menedżer SDK. Zapobiega to zdefiniowaniu funkcji getChildFragmentManger().

+1

Dzięki bro! –

+0

Działa to również dla mnie przy użyciu najnowszej biblioteki Android-support-v4. – kdroider

+0

dziękuję bardzo – samira

Powiązane problemy