我正在创建一个聊天应用程序&为此,我使用了TabHost。
在第一个标签中包含好友列表,并且只要用户点击任何一个好友
来自好友,它应该为该伙伴创建另一个标签以便聊天。我已经完成了这个,但我的问题是我使用一个Activity来执行聊天
但它总是为每个好友显示相同的活动。
任何帮助都将受到高度赞赏。这是我的代码,
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
RosterEntry entry = List.get(position);
String userName = entry.getName();
Intent intent = new Intent().setClass(RosterScreen.this,
com.spotonsoft.chatspot.ui.ChatScreen.class);
TabSpec tabSpec = Home.tabHost.newTabSpec("chat")
.setIndicator(userName).setContent(intent);
Home.tabHost.addTab(tabSpec);
}
最诚挚的问候,
〜阿努普
答案 0 :(得分:1)
您可以在启动之前向您的意图添加数据,例如
intent.putExtra("user", userName);
在活动的onCreate中,您可以阅读此数据并使用它来设置您的活动。
另外,请确保为您的活动设置了正确的launchmode。
答案 1 :(得分:1)
在ChatScreen的onCreate中,您只需设置基本内容,例如获取View并将其存储在私有字段中
onResume你用特定于好友的数据“重新创建”ChatScreen ...如何做到这一点(请在代码中阅读评论)?
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.*;
public class ChatScreen extends Activity {
TextView textview = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
textview = new TextView(this);
setContentView(textview);
}
@Override
public void onResume(){
super.onResume();
Intent intent = getIntent();
if(intent!=null){
//we read buddy-specific data here
textview.setText(intent.getStringExtra("chatwith"));
//we only setting textview with user name
//in real app you should store conversation somewere (fx in db)
//and load it here
}
}
}
和你的代码
Intent intent = new Intent().setClass(RosterScreen.this, com.spotonsoft.chatspot.ui.ChatScreen.class);
// you shoud add this line and provide some information fx useName or userID to ChatScreen Activity
intent.putExtra("chatwith", userName);
TabSpec tabSpec = Home.tabHost.newTabSpec("chat").setIndicator(userName).setContent(intent);
Home.tabHost.addTab(tabSpec);