2011-11-11 165 views
1

我在我的應用程序中創建了一個自定義標籤欄(使用TabHostTabWidget)。但是在我的TabActivity中,我想要調用當前選中的Activity的方法。 下面是我如何初始化標籤欄的示例:Android標籤欄:訪問當前標籤頁活動

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.tabbar); 

     TabHost tabHost = getTabHost(); 
     Intent content; 
     Button tabView; 
     TabSpec tab; 

     content = new Intent(this, Test1.class); 
     tabView = new Button(getApplicationContext()); 
     tabView.setBackgroundDrawable(getResources().getDrawable(R.drawable.btn_tableft_selector)); 
     tabView.setText("Test1"); 
     tabView.setTypeface(font); 
     tabView.setTextColor(Color.WHITE); 
     tabView.setPadding(0, 2, 0, 0); 
     tab = tabHost.newTabSpec("test1").setIndicator(tabView).setContent(content); 
     tabHost.addTab(tab); 

     ... 
    } 

我的問題是,在我的TabActivity,並在所有3個標籤我想收到LocationUpdates,但我需要提供位置更新之前做一些驗證到標籤的Activity
我想要做的是接收我的TabActivity中的位置更新,執行處理,然後調用當前選項卡Activity中的某種方法,但是我無法從tabHost訪問它。有沒有辦法做到這一點?

回答

1

如果它們都是活動,那麼你可以使用ActivityGroup的東西,因爲TabActivity擴展了ActivityGroup。您需要定義一個位置接口或者所有活動實施的位置接口,以避免崩潰或執行檢查。此外,如果您不是沿着尚未太遠,就應該考慮使用兼容性庫和使用片段,tabactivity和的ActivityGroup已棄用

LocalActivityManager m = getLocalActivityManager(); 
((LocationInterface)m.getCurrentActivity()).sendLocation(); 
+0

感謝,我將在本週嘗試了讓你知道,如果它的工作,因爲我需要:) – ffleandro

+0

它完全按照我的需要:)感謝兄弟。你知道使用Fragments API實現TabActivity的好教程嗎? – ffleandro

+0

http://android.codeandmagic.org/2011/07/android-tabs-with-fragments/給我一個嘗試,雖然通過它後,我會說你可以簡化它沒有一個tabhost一點。只是使用按鈕或其他東西。但一個好地方開始。 – caguilar187