2012-04-19 15 views
0

実行時にギャラリーを生成するメソッドを記述します。プログラムで生成されたギャラリーをタブレイアウトに追加するにはどうすればよいですか?

private Gallery createGallery(ImageAdapter imageAdapter) { 

    Gallery sampleGallery = new Gallery(getApplicationContext()); 
    sampleGallery.setLayoutParams(new ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.FILL_PARENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT)); 
    sampleGallery.setGravity(Gravity.FILL_VERTICAL); 
    sampleGallery.setSpacing(5); 
    sampleGallery.setAdapter(imageAdapter); 
    sampleGallery.setSelection(1); 
    return sampleGallery; 

} 

次にギャレーを作成し、それをタブレイアウトに設定しようとします。

final TabHost mTabHost = (TabHost) findViewById(R.id.tabHost); 
    mTabHost.setup(); 
    Gallery tabGallery = createGallery(brkingNewAdapter); // my image adapter 
    tabGallery.setId(R.id.gallery_1); 
    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1") 
      .setContent(R.id.gallery_1)); 

hereに言及したようにR.id.gallery_1が定義されます。

次のような例外があります。

ID 2130968576

この上の任意の助けを借りて、ビューを見つけることができなかったので、

タブのコンテンツを作成できませんでしたか?

ありがとうございます。

答えて

1

TabContentFactoryをご覧ください。

あなたのためのソリューションは、TabContentFactoryを実装し、createTabContent方法でGalleryインスタンスを返し、addTabsetContent(TabHost.TabContentFactory contentFactory)方法を使用することです。

class GalleryContentFactory implements TabContentFactory{ 
    private ImageAdapter imageAdapter; 
    public GalleryContentFactory(ImageAdapter imageAdapter){ 
     this.imageAdapter = imageAdapter; 
    } 
    public View createTabContent(String tag){ 
     Gallery sampleGallery = new Gallery(getApplicationContext()); 
     sampleGallery.setLayoutParams(new ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.FILL_PARENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT)); 
     sampleGallery.setGravity(Gravity.FILL_VERTICAL); 
     sampleGallery.setSpacing(5); 
     sampleGallery.setAdapter(imageAdapter); 
     sampleGallery.setSelection(1); 
     return sampleGallery; 
    } 
} 

とタブに追加するための:

GalleryContentFactory galleryFactory = new GalleryContentFactory(brkingNewAdapter); 
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2") 
      .setContent(galleryFactory)); 
関連する問題