Przeglądałem posty w Stack Overflow i samouczkach na innych stronach internetowych i nie mogę zrozumieć, jak używać TabHost
. Czy ktoś może mi to wyjaśnić i może wysłać mi link do samouczka?Jak używać tabHost dla Androida?
Odpowiedz
W ManiActivity rozciąga TabActivity
public class MainActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); TabHost mTabHost = getTabHost(); mTabHost.addTab(mTabHost.newTabSpec("first").setIndicator("First").setContent(new Intent(this ,FirstActivity.class))); mTabHost.addTab(mTabHost.newTabSpec("second").setIndicator("Second").setContent(new Intent(this , SecondActivity.class))); mTabHost.setCurrentTab(0); } }
W AC tivity nie używa układu "activity_main.xml".
Tabhost mTabHost = getTabHost(); jest tworzenie głównej zakładki.
mTabHost.newTabSpec ("first") to stwórz identyfikator tabspec "first".
setIndicator ("First") to tekst "Pierwszy" w zakładce tytułu.
setContent (new Intent (ten, FirstActivity.class)) jest korzystanie z zawartości FirstActivity.class (FirstActivity.java)
mTabHost.addTab (....) to dodać Spectab do głównej karcie
mTabHost.setCurrentTab (0) to zakładka obrażeń na stronie startowej.
FirstActivity.java
public class FirstActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
}
}
SecondActivity.java
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
}
}
"R.layout.first_layout" jest zadowolony z first_layout.xml
"R.layout.second_layout" jest zadowolony z second_layout.xml
W AndroidManifest.xml dodać nazwę aktywność ".FirstActivity" i ".SecondActivity" w przykładzie xml.
Finish !!!!!
Zakładki nie pojawiają się ... dlaczego? – guiomie
getTabHost() nie działa dla mnie. Nie importuje się jako zasób. – Eenvincible
@Niezwyciężony powinieneś mieć swoją działalność Rozszerz TabActivity – Jimmar
Przede wszystkim podczas TabHost
nie jest przestarzała, TabActivity
na kolei jest przestarzała powodu Fragment
API.
Istnieją dwa sposoby korzystania z TabHost; użycie Fragmentu poprzez FragmentTabHost
i użycie TabHost.TabContentFactory
.
1. Korzystanie Fragment poprzez FragmentTabHost
Ten przykładowy kod pokazują, jak korzystać TabHost aktywności.
FragmentTabHostActivity.java
public class FragmentTabHostActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_tab_host_activity);
FragmentTabHost fragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
fragmentTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
fragmentTabHost.addTab(getTabSpec1(fragmentTabHost), Tab1Fragment.class, null);
fragmentTabHost.addTab(getTabSpec2(fragmentTabHost), Tab2Fragment.class, null);
}
private TabHost.TabSpec getTabSpec1(FragmentTabHost tabHost) {
return tabHost.newTabSpec("First Tab")
.setIndicator("Tab1");
}
private TabHost.TabSpec getTabSpec2(FragmentTabHost tabHost) {
return tabHost.newTabSpec("Second Tab")
.setIndicator("Tab 2");
}
}
fragment_tab_host_activity.xml
<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<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="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
Właściwie za pomocą fragmentu, można użyć Tab wewnątrz fragment (Android docs).
2. Korzystanie TabHost.ContentFactory
TabHostActivity.java
public class TabHostActivity extends AppCompatActivity implements TabHost.TabContentFactory {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
tabHost.setup();
tabHost.addTab(getTabSpec1(tabHost));
tabHost.addTab(getTabSpec2(tabHost));
}
private TabHost.TabSpec getTabSpec1(TabHost tabHost) {
return tabHost.newTabSpec("First Tab")
.setIndicator("Tab1")
.setContent(this);
}
private TabHost.TabSpec getTabSpec2(TabHost tabHost) {
return tabHost.newTabSpec("Second Tab")
.setIndicator("Tab 2")
.setContent(this);
}
@Override
public View createTabContent(String tag) {
return LayoutInflater.from(this).inflate(R.layout.activity_tab_1, null);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<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="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</TabHost>
Jednak ja osobiście polecam korzystania Ostatnio Material Design style TabLayout
class.
- 1. Android 1.6 & Fragment & Tabhost
- 2. Jak wyśrodkować tekst w tabhost?
- 3. jak dodać tabhost w fragmentach
- 4. Android: TabHost bez TabActivity
- 5. TabHost - jak zmienić tekst zakładki w XML
- 6. Jak używać zawijania TabHost zawierającego MapView, który wyświetla poniżej widok AdMob?
- 7. Jak używać Androida DialogFragment metody setStyle()
- 8. TabHost wyświetla zawartości raz (onCreate)
- 9. Kiedy używać mapy ArrayMap dla Androida zamiast HashMap?
- 10. Czy powinienem używać ActionBarSherlock dla aplikacji Androida 4.0+?
- 11. IllegalStateException: Fragment już dodany w fragmencie tabhost
- 12. Samouczek implementacji TabHost w Androidzie 2.2 + ViewPager i Fragmenty
- 13. Jak pisać sterowniki dla Androida?
- 14. Jak zbudować Qt5 dla Androida?
- 15. Jak zminimalizować całą aplikację na Androida?
- 16. Jak rozpocząć korzystanie z SQLCipher dla Androida?
- 17. Jak buforować odpowiedzi REST, Wiosna dla Androida
- 18. Jak ustawić współczynnik skali dla emulatora androida?
- 19. Request.Browser.IsMobileDevice = false dla Androida, dlaczego?
- 20. TabHost/TabWidget - obraz w tle skali?
- 21. Android: TabHost - przekazywanie parametrów do fragmentów
- 22. Jak opracować aplikację Augmented Reality dla Androida?
- 23. Jak mogę używać ikon systemowych w mojej aplikacji na Androida?
- 24. Dodawanie przewijania w tabhost w Androidzie
- 25. Jak używać Daggera w aplikacji Java Gradle bez Androida?
- 26. Kiedy używać Dagger w aplikacji na Androida?
- 27. OTA dla Androida Rzeczy
- 28. Silnik szablonów dla Androida
- 29. Alternatywa dla Androida dla Line2D?
- 30. powiększanie phonegap dla Androida
TabHost jest przestarzałe i zaleca się używać Fragmentów zamiast tego. Oto samouczek dotyczący fragmentów: http://www.vogella.com/articles/Android/article.html#fragments_tutorial Jeśli naprawdę chcesz korzystać z TabHost, może ktoś inny może pomóc. Nie mam z tym większego doświadczenia. Powodzenia! –
czy naprawdę istnieje związek między tabHosts a fragmentami? –
@AndyHarris TabHost nie jest przestarzałe. TabActivity to. Przestań rozpowszechniać fałszywe plotki. – aldok