我有一个使用我找到的标签栏主机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而不是我发送的索引。
答案 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 它是一个非常好的标签主机。