广播接收器没有额外的

时间:2012-02-26 23:14:40

标签: android

我有一个使用我找到的标签栏主机api的应用程序,并且当我收到Sms消息时,我正在尝试使用它来更改活动。

此选项卡主机中构建的接收器如下:

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而不是我发送的索引。

2 个答案:

答案 0 :(得分:2)

这听起来像是一个类似的问题:Android keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras?

因此,在设置操作时,您可以尝试为您的意图提供一些唯一ID

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

确保最新的一个是有效的(因此 extras ID

另一方面......你没有使用PendingIntents所以这可能都是无关紧要的。如果是这样,请忽略。

答案 1 :(得分: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 它是一个非常好的标签主机。