0

クラス CustomTab が TabActivity を拡張しています。

protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.custom_tab);

tabHost = getTabHost();

Intent intentA = new Intent(getBaseContext(), A.class);
Intent intentB = new Intent(getBaseContext(), B.class);
Intent intentC = new Intent(getBaseContext(), C.class);

TabSpec tabA = tabHost
        .newTabSpec("a")
        .setIndicator("",
                getResources().getDrawable(R.drawable.icon_a))
        .setContent(intentA);
TabSpec tabB = tabHost
        .newTabSpec("b")
        .setIndicator(
                "",
                getResources()
                        .getDrawable(R.drawable.icon_b))
        .setContent(intentB);
TabSpec tabC = tabHost
        .newTabSpec("c")
        .setIndicator("",
                getResources().getDrawable(R.drawable.icon_c))
        .setContent(intentC);


tabHost.addTab(tabA);
tabHost.addTab(tabB);
tabHost.addTab(tabC);
tabHost.setCurrentTab(0);

およびアクティビティ B:

Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.b);

((CustomTab) getParent()).getTabHost().setCurrentTab(3);

アクティビティBの実行時にタブ3(アクティビティC)に切り替えたいので、「((CustomTab) getParent()).getTabHost().setCurrentTab(3);」でやってみました タブが変わるだけで中身が変わらず、似たようなトピックを作成しましたが正解がありません。

4

1 に答える 1

1

TabActivity を再度呼び出して、このことを管理しました。

TabActivity

int tabNumber = getIntent().getExtras().getInt("tabNumber");
tabHost.setCurrentTab(tabNumber);

そして、あなたのアクティビティ B のような子アクティビティで TabActivity を次のように呼び出します。

Intent intent = new Intent(BActivity.this,
                            CustomTab.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent.putExtra("tabNumber",3);
                    startActivity(intent);

これに対する正しい解決策がないかどうか。しかし、私は他の解決策を持っていません。というわけで、これを使いました。

于 2013-03-28T04:18:38.503 に答える