2012-01-19 4 views
0

私はアンドロイドの初心者ですが誰も私のTabHostに関する私の問題を助けることができますか? 私はタブホストを持っていて、私は3つのクラスがTabHostにこのactiviyまたはクラスを置くか、または呼びたいと思っています。私は何をするつもりです。ここに私のコードは私のタブのホストである:tabhostに他のアクティビティを挿入するには?

public class Tab extends Activity { 

    TabHost th; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.tab); 

     Resources res = getResources();  

     th = (TabHost)findViewById(R.id.tabhost);  
     th.setup(); 
     TabSpec specs = th.newTabSpec("tag1"); 
     specs.setContent(R.id.tab1); 
     specs.setIndicator("Settings", res.getDrawable(R.drawable.ic_tab_setting)); 
     th.addTab(specs); 

     specs = th.newTabSpec("tag2"); 
     specs.setContent(R.id.tab2); 
     specs.setIndicator("Battery Information",res.getDrawable(R.drawable.ic_tab_batteryinfo)); 
     th.addTab(specs); 

     specs = th.newTabSpec("tag3"); 
     specs.setContent(R.id.tab3); 
     specs.setIndicator("Help", res.getDrawable(R.drawable.ic_tab_help)); 
     th.addTab(specs); 
    } 
} 

はどこ私は、私が作ったこれら3つのクラスを呼び出すするつもり?

答えて

0

タブを使用している場合は、TabActivityActivityの代わりに拡張する必要があります。また、あなたはidによってそれを見つける必要はありません。以下に示すように

だから、あなたのコードを変更する必要があり、

public class Tab extends TabActivity{ 
    ... 
    TabHost tabHost; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     ... 
     setContentView(R.layout.tab); 

     ... 
     Resources res = getResources(); // Resource object to get Drawables 
     tabHost = getTabHost(); // The activity TabHost 
     TabHost.TabSpec spec; // Resusable TabSpec for each tab  
     Intent intent; // Reusable Intent for each tab 

     intent = new Intent().setClass(this, Activity1.class); 
     spec = tabHost.newTabSpec("Tab One").setIndicator("Tab One",res.getDrawable(R.drawable.first_tab)).setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, Activity2.class); 
     spec = tabHost.newTabSpec("Tab Two").setIndicator("Tab Two",res.getDrawable(R.drawable.second_tab)).setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, Activity3.class); 
     spec = tabHost.newTabSpec("Tab Three").setIndicator("Tab Three",res.getDrawable(R.drawable.third_tab)).setContent(intent); 
     tabHost.addTab(spec); 

     tabHost.setCurrentTab(0); // set first tab selected when activity is first loaded 
     ... 
    } 
} 

はすなわち、あまりにもあなたのマニフェストファイルにすべての3つの活動を追加することを忘れないでください。 Activity1.class、Activity2.class、およびActivity3.class。

+0

「アクティビティ」を使用しているときは、「アクティビティ」のタブを使用できます。あなたが必要とするのは、 'findViewById()'によって 'TabHost'を見つけて、' tabHost.setup();メソッドを呼び出すことです。 –

+0

Yup.iは知っています。しかし、私は例を挙げた方法を説明していました。 – Hiral

+0

tabhostでTaskKiller.javaを呼び出すと、エラーが発生します。彼らは同じパッケージに入っています。ここにエラーがあります: E/AndroidRuntime(6462):java.lang.RuntimeException:アクティビティを開始することができません –

2

インテントをIntent intent = new Intent(this, otherActivity.class);として作成し、このインテントをspecs.setContent(intent);に設定することができます。Hereは、タブを使用する例です。

0

Activityの代わりにActivityGroupを使用してこれを行うことができます。以下のリンクを確認してください。

Experience - Multiple Android Activities in a TabActivity

私はそれはあなたを助けることを願っています。

+0

私はあなたのすべての推薦をしますが、それでも私はエラーが発生しました。常にアプリケーションを閉じるように促します。私は何をすべきか分からなかった。私の頭はこの事のために痛いです。 :) Activityを拡張するTaskKiller.javaをどのように呼び出すのですか?このクラスの機能は、実行中のアプリケーションをすべて終了させることです。このクラスを呼び出すことは可能ですか?助けてくれてありがとう。 –

関連する問題