2011-01-06 6 views
0

私はHello, TabWidgetのGoogleのexmapleを使用していますが、このように見えるように変更されています:こんにちは、TabWidget各タブは、新しいXMLを参照してください

main.xml:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TabWidget 
     android:id="@android:id/tabs" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
      <TextView 
       android:text="@+layout/text" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" /> 
      <TextView 
       android:id="@+id/textview2" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:text="this is another tab" /> 
      <TextView 
       android:id="@+id/textview3" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:text="this is a third tab" /> 
     </FrameLayout> 
    </LinearLayout> 
</TabHost> 

javaファイル:

public class HelloTabWidget extends TabActivity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TabHost mTabHost = getTabHost(); 

     mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1").setContent(R.layout.text)); 
     mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2)); 
     mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("TAB 3").setContent(R.id.textview3)); 

     mTabHost.setCurrentTab(0); 
    } 
} 

、ここでのres /レイアウトでtext.xmlです:

<LinearLayout 
    android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" > 

    <TextView 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" 
      android:text="This is Tab 1" /> 
</LinearLayout> 

私が基本的にしているのは、各タブがmain.xmlのすべてではなく独自のxmlファイルを参照していても、最初のタブのテキストは表示されません。

+0

上記のように、javaファイルの最初のタブとmain.xmlの最初の Clozecall

答えて

0

各タブを自分のActivityに参照させようとしていますか?もしそうなら、あなたは各タブの内容として意図を設定することができます。もちろん

intent = new Intent().setClass(this, Test.class);  
spec = tabHost.newTabSpec("tab_test1").setIndicator("TAB 1").setContent(intent); 
     tabHost.addTab(spec); 

を、あなたはその後、レイアウトとしてtest.xmlを設定し、テスト(または任意の他)という名前のクラスを持っている必要があるだろう。

public class Test extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test); 
    } 
} 

This tutorialこれはあなたが設定しようとしているシナリオのタイプであれば更なるお手伝いをします。

+0

何度も試してみても、入力していただきありがとうございます。私のアプリはまだ開く前に強制終了しています。はい、各タブがそれぞれのアクティビティを参照するようにしたいと思います。あなたの例とリンクにあるものに続いて、あなたのアプリケーションを強制的に終了させました。私は新しい活動の作成についての指示を見ても、アンドロイド開発サイトに関する情報は見つかりませんでした。 – Clozecall

+0

マニフェストにアクティビティを追加しますか?チュートリアルを1行ずつ実行する場合は、すでに完成している単純なプロジェクトを見つけて、アプリケーションの外側にあるものが問題でないことを確認してみてください。 – sahhhm

+0

実際には、マニフェストに追加していません。私がここで発見したいくつかの研究:http://www.warriorpoint.com/blog/2009/05/24/android-how-to-switch-between-activities/ マニフェストに追加する必要があります。アンドロイド開発サイトに戻ってきましたが、特定のテストアクティビティをマニフェストに追加する方法についての情報は見つけられませんでした。メインの起動項目ではなく、タブ内にあるためです。 p.s.これまでのところあなたの助けと忍耐をありがとう! – Clozecall

0

組み込みタブホストを使用するタブには3つのオプションがあります。 1つのレイアウトファイルを持つ単一の活性に

  1. 複数のビュー
  2. 複数の活動あなたが#3をしたいようですねTabContentFactory

に建て

  • カスタムビュー。 LayoutInflater.inflateは、2つのパラメータを取りとして非常に適切ではありません

    setContent(new TabHost.TabContentFactory() { 
        public View createTabContent(String tag) 
        { 
         View view = LayoutInflater.from(HelloTabWidget.this).inflate(R.layout.text); 
         // Setup the view here 
         return view; 
        }}); 
    
  • 0
    View view = LayoutInflater.from(HelloTabWidget.this).inflate(R.layout.text); 
    

    :何をする必要があると、このようなものです。

    関連する問題