创建同一个Activity的多个实例?

时间:2011-06-09 11:09:55

标签: android

我正在创建一个聊天应用程序&为此,我使用了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);

}

最诚挚的问候,

〜阿努普

2 个答案:

答案 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);