Stack Overflowの投稿や他のWebサイトのチュートリアルを見てきましたが、TabHost
の使用方法を理解できません。誰かがそれを私に説明してください、そしておそらく私にチュートリアルへのリンクを送ってもらえますか?
ManiActivityでは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);
}
}
このアクティビティでは、レイアウト "activity_main.xml"を使用しません。
Tabhost mTabHost = getTabHost();メインタブを作成します。
mTabHost.newTabSpec( "first")はtabspec id "first"を作成します。
setIndicator( "First")は、タイトルタブにテキスト「First」を作成します。
setContent(new Intent(this、FirstActivity.class))はFirstActivity.class(FirstActivity.Java)のコンテンツを使用します
mTabHost.addTab(....)は、メインタブにspectabを追加します
mTabHost.setCurrentTab(0)は、開始ページのデフォルトタブです。
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」は、first_layout.xmlのコンテンツです
「R.layout.second_layout」は、second_layout.xmlのコンテンツです
AndroidManifest.xmlで、例xmlのアクティビティ名「.FirstActivity」と「.SecondActivity」を追加します。
完了!!!!!
まず、TabHost
は非推奨ではありませんが、TabActivity
はFragment
APIにより非推奨です。
TabHostを使用するには2つの方法があります。 FragmentTabHost
経由でフラグメントを使用し、TabHost.TabContentFactory
を使用します。
1。 FragmentTabHost
を介したフラグメントの使用
このサンプルコードは、アクティビティでTabHostを使用する方法を示します。
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>
実際には、フラグメントを使用することにより、フラグメント内でTabを使用できます( Android docs )。
2。 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>
ただし、個人的には最新の Material Design style TabLayout
class を使用することをお勧めします。