0

マイmain.xmlレイアウトは単に二つのボタン、以下を示しコンテンツエリア、含まれています私のケースでボタンが押されたときにコンテンツを更新するには? (タブ状機能)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 


    <LinearLayout 
     android:id="@+id/myBtns" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:orientation="horizontal" 
    > 
     <Button 
      android:id="@+id/btn_one" 
      android:layout_width="100dip" 
      android:layout_height="30dip" 
       android:text="button one" 
     /> 
     <Button 
      android:id="@+id/btn_two" 
      android:layout_width="100dip" 
      android:layout_height="30dip" 
       android:text="button two" 
     /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/content_area" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    > 
     <!--different button press will embed different content here--> 

    </LinearLayout> 


    </LinearLayout> 

を私は自分のタブ区切りを作成したいです機能のように、各ボタンを押すとボタンの下のコンテンツ(content_area)が更新されます。だから、私は2つの他のコンテンツのレイアウトを用意しています

content_one.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <TextView.../> 
    <Button .../> 

</LinearLayout> 

がcontent_two.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <Gallery.../> 
    <Button .../> 

</LinearLayout> 

をすべての私の単純なコードでは、私は希望、上記示しました。次のような機能を実装する:

main.x mlの

  • button_oneが押されたときに、content_one.xmlcontent_areaのmain.xmlに埋め込まれます。 button_twoが押されたときに

  • は、main.xmlcontent_areaタブ状機能を作成するには、ボタンを使用することを意味content_two.xml

に更新されます。

私の質問はどのように私のmain.xmlレイアウトのcontent_area内側に埋め込まれて外部のレイアウトxmlファイル(& content_two.xmlが例えばcontent_one.xml)とcontent_areaを更新するのですか?

です:

button_one.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     //What to do here?? to update the content_area in main.xml with an external xml layout 
    } 
}); 

---------------- UPDATE ------------------- ---------

私が試した:

button_one.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      LayoutInflater inflater = (LayoutInflater)MyActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View inflatedView = inflater.inflate(R.layout.content_one, null); 

      LinearLayout contentArea= (LinearLayout) findViewById(R.id.content_area); 
      contentArea.addView(inflatedView); 
     } 
    }); 

しかし、それは動作しません、なぜですか?

+0

この前の答えはあなたを助けることができます。http://stackoverflow.com/questions/5961522/help-how-can-i-do-includein-xml-programmatically-in-my-app-android – Fortega

+0

@フォルガ、私は試みたが動作しない、私の更新を参照してください – Leem

答えて

0

LayoutInflaterを使用して、XMLファイルからビュー階層を作成できます。次のコードは、my xmlビューを返します。

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View inflatedView = inflater.inflate(R.layout.content_one, null); 

inflateする最初のパラメータ(...)は、拡張するxmlファイルです。 2番目のパラメータは、膨張したビューのオプションの親です。私の場合、私は持っていません。次に、コンテンツエリアにビューを追加することができます。

contentArea.addView(inflatedView); 
+0

@ spidy、私はあなたの方法を試してみました、それは動作しません、外部レイアウトは全く表示されません – Leem

+0

@ spidy、私の投稿で私の更新を参照してください – Leem

+0

コンテンツがない場合、またはビューを無効にして再描画する必要がある場合は、サイズはおそらく0です。 – Spidy

関連する問題