2012-02-26 29 views
0

我有使用標籤欄的主機API,我發現了一個應用程序,我想用它來改變的活動時,我收到一條短信。廣播接收器沒有獲得額外的

,這是構築成這個標籤主機接收器是下列:

public class ChangeTabBroadcastReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     int index = intent.getExtras().getInt(CURRENT_TAB_INDEX); 
     setCurrentTab(index); 
    } 
} 

這在ScrollableTabActivity.java定義,則ScrollableTabHost延伸這一點,當SMS是收訖被稱爲在該波紋管的方法:

Intent intent2 = new Intent(context,ScrollableTabHost.class);  
intent2.putExtra("CURRENT_TAB_INDEX", index); 
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(intent2); 

還有一個OnTabChanged監聽器版本,其中打印選項卡的索引到日誌。當我從模擬器發送文本時,我顯示該選項卡已更改爲索引0兩次,無論我嘗試將其設置爲哪個索引。 我一直在尋找一段時間,不能找到爲什麼我得到0,而不是我發送的索引。

回答

0

好吧,所以我想通了。原來我只是沒有到代碼設置標籤欄API希望它正確的代碼切換到新的活動在我的其中一個選項卡的方法如下:

Intent intent2 = new Intent(ScrollableTabHost.ACTION_CHANGE_TAB);  
    intent2.putExtra(ScrollableTabHost.CURRENT_TAB_INDEX, 4); 
    context.sendBroadcast(intent2); 

如果你想知道的API是從https://github.com/honcheng/ScrollableTabHost-for-Android 它是一個很不錯的標籤主機。

2

這聽起來像一個類似的問題,這樣的:Android keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras?

所以,你也許可以試着給予唯一的ID你的意圖,當你設置操作:

intent.setAction("smsaction" + System.currentTimeMillis()); 

確保最新的一個是有效的(因此臨時演員ID

在其他r手......你沒有使用PendingIntents,所以這可能都是不相關的。如果是這樣,請忽略。

+0

感謝您的答覆,但這不是問題。 – jgelderloos 2012-03-14 05:05:13

+0

在待定意圖中,這是一個問題,您的選擇運作良好 – Ata 2014-02-15 10:29:44

相關問題