2012-02-26 15 views
0

私は見つけたタブバーホストapiを使っているアプリを持っていて、それを使ってSmsメッセージを受け取ったときに活動を変更しようとしています。放送受信機が余分に得られない

このタブホストに構築した受信機以下である:これはScrollableTabActivity.javaで定義され

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

、次いでScrollableTabHostはこれを延び、SMSはreveivedされたときに蛇腹方法で呼び出されます:

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に2回変更されたことが示されます。 私はしばらく探していて、私が送るインデックスの代わりに0を得ている理由を見つけることができません。

答えて

0

私はこれを理解しました。

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

誰がAPIを不思議に思っている場合:私は、単にコードの設定にタブバーAPIは以下のように、それは私のタブのいずれかで新しい活動に切り替えるための正しいコードは望んでいた道を持っていませんでしたが判明からですhttps://github.com/honcheng/ScrollableTabHost-for-Android それはかなり良いタブホストです。

2

それは、これに類似した問題のように聞こえる:だから、あなたは多分あなたがアクションを設定しているとき、あなたの意図にいくつか固有のIDを与えることを試みることができるAndroid keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras?

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

を確認します最新のものは、パーソナルプラグインで有効なもの(それゆえエキストラIDS

ですr手... PendingIntentsを使用していないので、これはすべて無関係かもしれません。もしそうなら、無視してください。

+0

回答ありがとうございますが、これは問題ではありませんでした。 – jgelderloos

+0

保留中の意図では問題であり、オプションもうまく機能します – Ata

関連する問題