返回信息流如图用SYSTEM.OUT监测,,显示就是中间两行的问题,可是看开发手册还是不理解啊!!!1
崩溃啊!!!!!一上午过去啦!!!!1
public class Activity01Activity extends Activity {
/** Called when the activity is first created. */
//基本变量声明
private static final String SERVERIP="192.168.1.110";//设置服务器IP
private static final int SERVERPORT=54321;//设置服务器端口号
private Thread mThread=null;
private Socket mSocket=null;
private Button mButton_In=null;
private Button mButton_Send=null;
private EditText mEditText01=null;
private EditText mEditText02=null;
private BufferedReader mBufferReader=null;
private PrintWriter mPrintWriter=null;
private String mStrMSG="";
private String Name="";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//各标签的声明获取
mButton_In=(Button)findViewById(R.id.mButton_In);
mButton_Send=(Button)findViewById(R.id.mButton_Send);
mButton_In.setText("LogIn");
mButton_Send.setText("Send");
mEditText01=(EditText)findViewById(R.id.mEditText01);
mEditText02=(EditText)findViewById(R.id.mEditText02);
/* 建立连接
* 获取输入输出流
*/
mButton_In.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
showAlert();//后来添加的
mSocket=new Socket(SERVERIP,SERVERPORT);
ObjectOutputStream out = new ObjectOutputStream(mSocket.getOutputStream());
out.writeObject(new String[]{getName()});
mBufferReader = new BufferedReader(new InputStreamReader(mSocket.getInputStream()));
mPrintWriter = new PrintWriter(mSocket.getOutputStream()) ;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});//输入部分结束
mButton_Send.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String str =mEditText02.getText().toString()+"\n";
/*
* system.out+test+2
*/
System.out.println("start...2");
mPrintWriter.print(str);
/*
* system.out+test+3
*/
System.out.println("start...3");
mPrintWriter.flush();
}
});//发送按钮功能结束
mThread = new Thread(mRunnable);
mThread.start();
}
Runnable mRunnable = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
while (true){
try {
if((mStrMSG = mBufferReader.readLine())!=null)
{
mStrMSG+="\n";
mHandler.sendMessage(mHandler.obtainMessage());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
Handler mHandler = new Handler(){
public void handleMessage(Message msg){
super.handleMessage(msg);
mEditText01.append(mStrMSG);
}
};
/*
* 对话框的实现
*/
public void showAlert(){
LinearLayout ll = new LinearLayout(Activity01Activity.this);
ll.setOrientation(LinearLayout.HORIZONTAL);
TextView tv = new TextView(Activity01Activity.this);
tv.setText("请输入昵称: ");
final EditText et = new EditText(Activity01Activity.this);
et.setWidth(160);
ll.addView(tv);
ll.addView(et);
AlertDialog alertDialog = new AlertDialog.Builder(Activity01Activity.this)
//设置标题使用给定的资源ID,app_about
.setTitle("聊天设置")
//设置一个监听时要调用对话框的积极按钮被按下
.setPositiveButton("确定", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialogInterface,int i){
Name=et.getText().toString();
}
//创建一个提供给此建设者和显示(参数AlertDialog)的对话
}).create();
alertDialog.setView(ll);
alertDialog.show();
}
//构造方法获取输入的名字
public String getName(){
return Name;
}
}
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #5848同步于 2012/4/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
菜鸟求助空指针问题啊。。。。
gg89tcl
2012/4/1镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 victor4040 的大作中提到: 】
: 哪两个?你就不能把错误信息贴出来吗?!
04-03 07:45:25.844: W/System.err(224): at z.activity01.Activity01Activity$1.run(Activity01Activity.java:130)
04-03 07:45:25.844: W/System.err(224): at java.lang.Thread.run(Thread.java:1096)
04-03 07:45:25.844: W/System.err(224): java.lang.NullPointerException
04-03 07:45:25.844: W/System.err(224): at z.activity01.Activity01Activity$1.run(Activity01Activity.java:130)
04-03 07:45:25.854: E/AndroidRuntime(224): java.lang.NullPointerException
04-03 07:45:25.854: E/AndroidRuntime(224): at z.activity01.Activity01Activity$5.onClick(Activity01Activity.java:106)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.view.View.performClick(View.java:2364)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.view.View.onTouchEvent(View.java:4179)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.widget.TextView.onTouchEvent(TextView.java:6541)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.view.View.dispatchTouchEvent(View.java:3709)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-03 07:45:25.854: E/AndroidRuntime(224): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
04-03 07:45:25.854: E/AndroidRuntime(224): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
04-03 07:45:25.854: E/AndroidRuntime(224): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.os.Handler.dispatchMessage(Handler.java:99)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.os.Looper.loop(Looper.java:123)
04-03 07:45:25.854: E/AndroidRuntime(224): at android.app.ActivityThread.main(ActivityThread.java:4363)
04-03 07:45:25.854: E/AndroidRuntime(224): at java.lang.reflect.Method.invokeNative(Native Method)
04-03 07:45:25.854: E/AndroidRuntime(224): at java.lang.reflect.Method.invoke(Method.java:521)
04-03 07:45:25.854: E/AndroidRuntime(224): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-03 07:45:25.854: E/AndroidRuntime(224): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-03 07:45:25.854: E/AndroidRuntime(224): at dalvik.system.NativeStart.main(Native Method)
04-03 07:45:25.854: W/System.err(224): at java.lang.Thread.run(Thread.java:1096)
04-03 07:45:25.854: W/System.err(224): java.lang.NullPointerException
printwriter空指针吧?
你看
try {
showAlert();//后来添加的
mSocket=new Socket(SERVERIP,SERVERPORT);
ObjectOutputStream out = new ObjectOutputStream(mSocket.getOutputStream());
out.writeObject(new String[]{getName()});
mBufferReader = new BufferedReader(new InputStreamReader(mSocket.getInputStream()));
mPrintWriter = new PrintWriter(mSocket.getOutputStream()) ;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这里是给它实例的地方,所以你看看这一个catch里面出什么问题了。
一般都是这个trycatch出问题那个引用才会空的。
【 在 bixiaopeng 的大作中提到: 】
: printwriter空指针吧?
: 你看
: try {
: ...................
额,谢谢了哈,我在看看书printwriter这个