2012-11-19 24 views
1

我一直有這個問題1個星期。
我有一個MainActivity extends TabActivity和A,B兩個活動在每個標籤。
現在我想在活動A中按一個按鈕,將當前頁面設置爲活動B的
但我不能使用setCurrentTab方法,但在MainActivity中除外。 如何使此功能起作用?如何在tab的活動中使用setCurrentTab方法?

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 
    } 
} 

+1

嘗試使用tabHost.setOnTabChangedListener(新OnTabChangeListener() \t \t \t { \t \t \t \t \t \t \t \t公共無效onTabChanged(字符串tabId) \t \t \t \t {} –

回答

5

試着做以下修改:

在主要活動:

  1. 充分利用tabHost靜態變量。

    private static TabHost tabHost;

  2. 添加一個新函數來獲取當前的tabhost。

    public static TabHost getCurrentTabHost(){ return tabHost; }

  3. 在AActivity,使用這樣的:

    MainActivity.getCurrentTabHost().setCurrentTab(1);

如果需要的話,你可以去空校驗。

+0

的IT工作!!!! !非常感謝您!TT – Kooper

+0

如果有效,請標記爲答案,以便對其他人也有幫助。 –

+0

好的!我做了^ _^ – Kooper

相關問題