2012-01-26 2 views
1

インターネット上でこのカスタムTabWidgetレイアウトが見つかりました。問題は、私はどのようにタブにコンテンツを挿入するのか知りません。誰かがこれを助けることができますか? activity1、activity2、およびactivity3があるとします。 HERESにコード:タブコンテンツとしてアクティビティを割り当てる方法は?

public class MainActivity extends Activity { 
private TabHost mTabHost; 

private void setupTabHost() { 
    mTabHost = (TabHost) findViewById(android.R.id.tabhost); 
    mTabHost.setup(); 
} 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    setupTabHost(); 
    mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); 

    setupTab(new TextView(this), "EASY"); 
    setupTab(new TextView(this), "MEDIUM"); 
    setupTab(new TextView(this), "INTENSE"); 
} 

private void setupTab(final View view, final String tag) { 
    View tabview = createTabView(mTabHost.getContext(), tag); 

    TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() { 
     public View createTabContent(String tag) {return view;} 
    }); 
    mTabHost.addTab(setContent); 

} 

private static View createTabView(final Context context, final String text) { 
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null); 
    TextView tv = (TextView) view.findViewById(R.id.tabsText); 
    tv.setText(text); 
    return view; 
} 
} 

答えて

1

あなたは、自分のファイルを作成するマニフェストでそれらを宣言し、そののonCreate setContentView(R.layout.activitylayout);に入れて活動にコンテンツを置きます。また、コンテンツが静的な場合は、適切なレイアウトで完全に記述されます。

わかりました。 viewここに公開View createTabContent(String tag) {return view;}あなたがそこに配置するレイアウトを返します。いくつかのlistViewOfMyPicturesやもの。

+0

こんにちは、答えはthxです。私はコンテンツをアクティビティとして設定する方法を理解しています。私はアンドロイドの開発サイトでチュートリアルを行った。しかしこれは、チュートリアルとは異なるコードを持つカスタムタブウィジェットです。私のコードで3つの異なる活動のために "setContent"パートをどのようにコード化するかをaxactlyに教えてもらえますか? – borislemke

+0

ここにビューとして戻ってきますpublic View createTabContent(String tag){return view;}そこに配置したいレイアウトを表示します。あなたは試してみませんか? – Gangnus

+0

正しくありません。どのようなエラーが表示されるのか、どのように動作しないのかを言う必要があります。誰もここであなたの仕事をしません。それを求めることは非常に無礼です。私たちは皆、私たちの仕事があります。 – Gangnus

0

TabHost.TabSpecのドキュメント、特にsetContent(Intent intent)をご覧ください。

Intent tabIntentA = new Intent(this, SomeActivity.class);などのインテントを作成し、setContent(...)メソッドに渡します。

EDIT:Tab Layout tutorialのセクション6で

ルック - 特にこのコード...

Intent intent; // Reusable Intent for each tab 

// Create an Intent to launch an Activity for the tab (to be reused) 
intent = new Intent().setClass(this, ArtistsActivity.class); 

// Initialize a TabSpec for each tab and add it to the TabHost 
spec = tabHost.newTabSpec("artists").setIndicator("Artists", 
        res.getDrawable(R.drawable.ic_tab_artists)) 
        .setContent(intent); 
tabHost.addTab(spec); 

あなたはおそらく、そのチュートリアルとにかくではなく、あなたが投稿したコードを以下のほうが良いと思いますあなたの質問で。

+0

あなたは私のコードを見て、正確にどこでこれらを入力しなければならないのか教えてください。 – borislemke

+0

動作させることができませんでした。コードをコピーしてコードに貼り付け、ここに投稿してください。私がうまくいけば答えを受け入れるでしょう.. -_- – borislemke

+0

@borislemke:私の編集した答えを参照 – Squonk

0

現在、TabContentFactoryを作成している場所の代わりに、特定のアクティビティのインテントを作成し、 "setContent"経由でtabSpecに追加します(Android Dev GuideのHello Tabwidgetチュートリアルのコピー/ペースト)。

Intent intent; // Reusable Intent for each tab 

// Create an Intent to launch an Activity for the tab (to be reused) 
intent = new Intent().setClass(this, ArtistsActivity.class); 

// Initialize a TabSpec for each tab and add it to the TabHost 
spec = tabHost.newTabSpec("artists").setIndicator("Artists", 
        res.getDrawable(R.drawable.ic_tab_artists)) 
       .setContent(intent); 
tabHost.addTab(spec); 
0

私も同じ問題に直面し、下記のようにコードを修正して解決しました。

setupTab1(new TextView(this), "MEDIUM"); 
setupTab2(new TextView(this), "INTENSE"); 


private void setupTab1(final View view, final String tag) { 

View tabview = createTabView(mTabHost.getContext(), string); 

Intent intent1 = new Intent().setClass(this, DummyActivity1.class); 
TabSpec tab1 = mTabHost 
    .newTabSpec("TAB1") 
    .setIndicator(tabview) 
    .setContent(intent1); 

mTabHost.addTab(tab1); 

}

private void setupTab2(final View view, final String tag) { 
View tabview = createTabView(mTabHost.getContext(), string); 

Intent intent2 = new Intent().setClass(this, DummyActivity2.class); 
TabSpec tab2 = mTabHost 
    .newTabSpec("TAB2") 
    .setIndicator(tabview) 
    .setContent(intent2); 

mTabHost.addTab(tab2); 

}

以前に我々は、すべてのTabviewためsetupTab()メソッドを持っていました。これで、異なるアクティビティを持つ異なるsetupTab()メソッドが作成されました。

それは私のために働いて..!これがあなたを助けることを願っています。

関連する問題