0

私はこの問題を1週間抱えています。
各タブにaMainActivity extends TabActivityとA、Bの2つのアクティビティがあります。
ここで、アクティビティAのボタンを押して、現在のページをアクティビティBのタブに設定したいのですが、以外の方法
は使用できません。この関数を機能させるにはどうすればよいですか?setCurrentTabMainActivity

public class MainActivity extends TabActivity

public TabHost tabHost; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Resources res = getResources();
    tabHost = getTabHost();
    TabHost.TabSpec spec;
    Intent intent;
    intent = new Intent().setClass(this, StartActivity.class);
    spec = tabHost.newTabSpec("tab1").setIndicator("A",res.getDrawable(R.drawable.start))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, WeatherActivity.class);
    spec = tabHost.newTabSpec("tab2").setIndicator("B",res.getDrawable(R.drawable.weather))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);

}

public class AActivity extends Activity{

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a_layout);
        Button b = (button)findViewById(R.id.bt);
        b.setOnClickListener(this);
    }
    public void onClick(View v) {
        tabHost.setCurrentTab(1);
        //Can't work here
    }
}

4

1 に答える 1

5

次の変更を試してください。

主な活動:

  1. tabHost変数を静的にします。

    private static TabHost tabHost;

  2. 現在のタブホストをフェッチする新しい関数を追加します。

    public static TabHost getCurrentTabHost(){ return tabHost; }

  3. AActivityでは、次のように使用します。

    MainActivity.getCurrentTabHost().setCurrentTab(1);

必要に応じて、ヌルチェックを行うことができます。

于 2012-11-19T05:57:06.640 に答える