2012-02-19 5 views
0

私はあなたの投稿を読んでおり、とても役に立ちます。しかし、私は本当にあなたの経験豊富な助言が必要で、あなたが私であれば何をしますか? 私は4つのタブを持つアプリケーションをやっています。 4つのタブのレイアウトは似ています(セル内の値と3つのボタン、およびtextviewを持つ表)。あるタブから別のタブに変更されるのは、テーブル値とテキストビューのみです。ただし、各タブの値は前のタブに依存するため、タブ間でデータを共有する必要がありますAndroid:このタブでビューやアクティビティを使用する必要がありますか?タブに共有レイアウトを使用できますか?

どのようにアプローチする必要がありますか?私は、ビューを使用することは一般的にアクティビティよりも推奨されていることを読んでいます。すべてのタブで同じビューレイアウトを使用できますか?

どのようにデザインすればいいか教えてください。私は2.1上にあり、すべてのプラットフォームをターゲットにしています.THANK U

PS:framelayoutの下でtextviewを試しましたが、問題はJavaコードのテキストを変更するとすべてが変更されることですタブ。何らかの理由で、私は4つのテキストビュー(各タブごとに1つ)を持つことはちょっと冗長で悪いデザインですが、私は知らないと感じています!

答えて

0

私はレイアウトを定義し、それぞれのタブで同じレイアウトを使用することでこれにアプローチします。例えば。

public class MyTabActivity1 extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.tab_layout); 
    } 
+0

ありがとうございます。 (私の限られた知識から)その問題は、私が同じレイアウトを使用すると、同じテキストビュー(テーブルセルと他のテーブルビュー)が同じIDを持つということです。つまり、3のテキストビューを変更した場合、同じテキストビューがタブ1,2,4で変更され、そのタブは異なるテキスト値を持つ必要があるため、その必要はありません。 – Snake

+0

はい、同じIDを持ちますが、それでも問題ありません。 setContentView()はレイアウトを膨張させ、アクティビティが使用する一連のViewオブジェクトを作成します。各アクティビティには、独自のViewオブジェクトのセットがあります。この動作の簡単な例は、すべてのアイテムが同じレイアウトを使用するが、異なるデータを表示するListViewです。 – Macondo2Seattle

+0

ブラックライダー、あなたの答えをありがとう。私はまだ何かについて混乱しています。したがって、同じXMLレイアウトのタブを作成すると、内容が同じIDになることに同意したことになります。したがって、findViewByIdを実行してtextviewのIDを渡すと、そのアクティビティのtextviewが返されますか?またはそれを共有するtextview(タブを介して静的変数の一種) – Snake

0

問題を解決するには、TabHostとTabWidgetを使用できます。以下は実装のサンプルデモです。 Tab_Layout.xml

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <TabHost android:id="@android:id/tabhost" android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <LinearLayout android:layout_width="fill_parent" 
       android:layout_height="fill_parent" android:orientation="vertical" 
       android:paddingTop="4dip"> 

       <TabWidget android:id="@android:id/tabs" 
        android:layout_width="match_parent" android:layout_height="wrap_content" 
        android:layout_weight="0" android:orientation="horizontal" /> 

       <FrameLayout android:id="@+android:id/tabcontent" 
        android:layout_width="match_parent" android:layout_height="0dp" 
        android:layout_weight="1" /> 

      </LinearLayout> 
     </TabHost> 
    </LinearLayout> 
関連する問題