2011-12-06 17 views
0

我刚刚开始3天前的android开发,并且正在尝试为雅虎开发一个Messenger。第一个应用程序的地狱,对吧?! :DTabActivity显示同一活动的多个选项卡(初始化子活动的属性)

我现在面临的问题是,我试图实现一个标签式即时消息窗口,它应该向人们显示我目前正在聊天。我为单个聊天窗口设计了一个布局文件和必要的活动类,我正在使用一个TabActivity向用户显示其中的几个。 然而问题是我在活动类本身中存储了一些特定于聊天的信息(例如,我正在与之聊天的用户的ID),并且在创建新选项卡时,我正面临着初始化这些值的问题。

起初我用了一个BroadcastReceiver和意图来初始化像这样:

protected class MyListener extends BroadcastReceiver 
    { 

     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      if (intent.getAction().equals(
        "com.sirm2x.messenger.CHAT_WINDOW_CREATED")) 
      { 
       ChatWindowActivity.this.friendId = intent.getExtras() 
       .getString("friendId"); 
      } 
     } 
    } 

的问题是,所有的活动friendId被设置为通过对最后一个选项卡,待创造的价值!

这种情况的解决方案/最佳实践是什么?我是否正确接近问题?

任何帮助非常感谢!

回答

1

这里的问题是,你在每个或你的标签中注册一个广播接收器,并且你的每个接收器都接收广播,在其中设置friendId变量。

我不太确定BroadcastReceiver是否正确。

+0

我是多么的愚蠢!那么有什么选择? – M2X

+1

如果我是正确的,这个广播是在创建聊天窗口时发送的,这可能意味着参数可以放在用于启动活动的意图中 – njzk2

+0

这将解决我的问题的一部分,但是如果我应该怎么做如果我想初始化其他属性并避免序列化数据并通过意向发送它们?有什么建议么?更好的是,有没有办法通过TabActivity访问活动中定义的字段?这对我接下来要做的事非常重要! – M2X

相关问题