android 穿对象 本人现在初学android,想做一个简易聊天室,事先登录注册,发送消息的功能,我做了两个activity,一个事先登录注册,一个是简易的聊天界面,我现在遇到的问题是在登陆注册界面中事先登录后,怎样去获取输入输出流到另一个activity中得到,请高手指点迷津! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个页面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 1楼是传数据的,楼主问的是传对象。楼主可查查序列化传对象,实现Serializable接口 我以为就传用户名密码呢。你可以把对象导入一个byte[]流中,然后通过extra把流传递到第二个activity中,然后再读取byte[]流。 想传对象只能序列化了 ,对于android 可以用Serializable或parcelable,后是android特有的,效率高些, 请看下我的源代码: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()); } } }; } HttpClient Header 传参数,请教,或者推荐一些类似的信息也行 Export Android Application 求份android学习笔记 跪求!!!android编辑框输入内容,如何判定某些字符不允许输入??? android 改变Camera的preview图像 打开framebuffer设备失败 关于自定义地图 Android录像时内存一直增涨 个人开发的第一款安卓应用,欢迎大家来喷! 大神,,求救!读取不了sd卡ini文件 如何能彻底退出程序 关闭所有acitiviy 并自动关闭程序监听 学习开发安卓手机的软件,一定要原生安卓吗?
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
我以为就传用户名密码呢。
你可以把对象导入一个byte[]流中,然后通过extra把流传递到第二个activity中,然后再读取byte[]流。
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());
}
}
};
}