2012-02-26 30 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

相关问题