本人现在初学android,想做一个简易聊天室,事先登录注册,发送消息的功能,我做了两个activity,一个事先登录注册,一个是简易的聊天界面,我现在遇到的问题是在登陆注册界面中事先登录后,怎样去获取输入输出流到另一个activity中得到,请高手指点迷津!

解决方案 »

  1.   

    第一个页面
    Intent intent = new Intent();
    intent.putExtra("key", value);
    intent.setClass(context, xxx.class);
    startActivity(intent);第二个页面
    Intent intent=getIntent();
    int xvalue=intent.getIntExtra("key", 0);//0是默认值xvalue就是第一页传过来的value
      

  2.   

    1楼是传数据的,楼主问的是传对象。楼主可查查序列化传对象,实现Serializable接口
      

  3.   


    我以为就传用户名密码呢。
    你可以把对象导入一个byte[]流中,然后通过extra把流传递到第二个activity中,然后再读取byte[]流。
      

  4.   

    想传对象只能序列化了 ,对于android 可以用Serializable或parcelable,后是android特有的,效率高些,
      

  5.   

    请看下我的源代码:package cn.csdn.activity;import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    import cn.csdn.activity.R;
    import cn.csdn.service.UserService;public class LoginActivity extends Activity {
    EditText username;
    EditText password;
    Button login,register;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    findViews();
    }
    private void findViews() {
    username=(EditText) findViewById(R.id.username);
    password=(EditText) findViewById(R.id.password);
    login=(Button) findViewById(R.id.login);
    register=(Button) findViewById(R.id.register);
    login.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    String name=username.getText().toString();
    String pass=password.getText().toString();
    Log.i("TAG",name+"_"+pass);
    UserService uService=new UserService(LoginActivity.this);
    boolean flag=uService.login(name, pass);
    if(flag){
    Log.i("TAG","登录成功");
    Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_LONG).show();
    Intent intent=new Intent();
    intent.setClass(LoginActivity.this, MainActivity.class);


    }else{
    Log.i("TAG","登录失败");
    Toast.makeText(LoginActivity.this, "登录失败", Toast.LENGTH_LONG).show();
    }
    }
    });
    register.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    Intent intent=new Intent(LoginActivity.this,RegisterActivity.class);
    startActivity(intent);
    }
    });
    }

    }
    我想在这个activity中登陆连接服务器,然后在这个activity中得到输入输出流:package cn.csdn.activity;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.graphics.Camera;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;public class MainActivity extends Activity {
         
    private final String DEBUG_TAG=Camera.class.getSimpleName();
    //服务器端口、IP
    private static final String SERVERIP="192.168.220.1";
    private static final int SERVERPORT=54321;
    private Thread mThread=null;
    private Socket mSocket;
    private Button mButton_In=null;
    private Button mButton_Send=null;
    private TextView t1;
    private EditText mED1=null;
    private EditText mED2=null;
    private BufferedReader mBR=null;
    private PrintWriter mPW=null;
    private String mStrMSG="";

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.smain);
            mButton_In=(Button)findViewById(R.id.m_Button_In);
            mButton_Send=(Button)findViewById(R.id.m_Button_Send);
            mED1=(EditText)findViewById(R.id.mED1);
            mED2=(EditText)findViewById(R.id.mED2);
            t1=(TextView)findViewById(R.id.t2);
            
            //登陆
          mButton_In.setOnClickListener(new Button.OnClickListener()
            {
             public void onClick(View v)
             {
             try
             {
             //连接服务器
             Socket mSocket=new Socket(SERVERIP,SERVERPORT);
             //取得输入,输出流
             mBR=new BufferedReader(new InputStreamReader(mSocket.getInputStream()));
             mPW=new PrintWriter(new PrintWriter(mSocket.getOutputStream(),true));
            
             }
             catch(Exception e)
             {
             Log.e(DEBUG_TAG,e.toString());     
             }
             }
            });    
            //发送消息
            mButton_Send.setOnClickListener(new Button.OnClickListener(){ public void onClick(View arg0) {
    // TODO Auto-generated method stub
    try{

            
    //取得编辑框中我们输入的内容
    String str=mED2.getText().toString()+"\n";
    //发送给服务器
    mPW.print(t1.getText()+str);
    mPW.flush();

    }
    catch(Exception e)
    {
    Log.e(DEBUG_TAG,e.toString());
    }
    }
            
            });
            mThread=new Thread(mRunnable);
            mThread.start();
        }
        //线程:监听服务器发来的请求
        private Runnable mRunnable=new Runnable()
        {
         public void run()
         {
         while(true)
         {
         try
         {
         if((mStrMSG=mBR.readLine())!=null)
         {
         //消息换行
         mStrMSG+="\n";
         mHandler.sendMessage(mHandler.obtainMessage());
         }
         //发送消息
         }catch(Exception e)
         {
         Log.e(DEBUG_TAG,e.toString());
         }
         }
         }
        };
        Handler mHandler=new Handler()
        {
          
    public void handleMessage(Message msg)
         {
                 super.handleMessage(msg);
         try
         {
         //将聊天记录添加进来
         mED1.append(mStrMSG);
         }
         catch(Exception e)
         {
         Log.e(DEBUG_TAG,e.toString());
         }
         }
        };
        
    }