【发布时间】:2021-08-08 22:46:30
【问题描述】:
我在 Eclipse 中制作了一个 Java 消息传递应用程序,它作为 JAR 运行良好...现在我正在尝试使用 Android Studio 制作相同的应用程序,以了解基本的 android 开发...我不明白为什么我收到错误消息“ChatAppAndroidClone 不断停止”。
在 logCat 中它说:
2021-05-19 11:57:05.907 25336-25362/com.jasonkadams.chatappandroidclone E/AndroidRuntime:致命异常:Thread-2 进程:com.jasonkadams.chatappandroidclone,PID:25336 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String java.io.BufferedReader.readLine()” 在 com.jasonkadams.chatappandroidclone.MainActivity$IncomingReader.run(MainActivity.java:99) 在 java.lang.Thread.run(Thread.java:764)
有谁知道为什么会发生这种情况?提前致谢
这是我的 java 代码(只有一个类):
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class MainActivity extends AppCompatActivity {
BufferedReader reader;
PrintWriter writer;
Socket sock;
//String userName = System.getProperty("user.name");
String emoji = "8===D";
Button btn_send,btn_emoji;
EditText outgoing;
TextView incoming;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_send=findViewById(R.id.btn_send);
btn_emoji=findViewById(R.id.btn_emoji);
outgoing=findViewById(R.id.outgoing);
incoming=findViewById(R.id.incoming);
//set up networking and thread for incoming messages
setUpNetworking();
Thread readerThread = new Thread(new IncomingReader());
readerThread.start();
//BUTTONS//
btn_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// if (outgoing.getText() != null)
try {
writer.println("userName" + ": "+outgoing.getText().toString());
writer.flush();
} catch (Exception ex) {
ex.printStackTrace();
}
outgoing.setText("");
outgoing.requestFocus();
}
});
btn_emoji.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
writer.println("userName" + ": "+emoji);
writer.flush();
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
}
//METHODS//
private void setUpNetworking() {
try {
sock = new Socket("10.0.0.171", 5000);
InputStreamReader streamReader = new InputStreamReader(sock.getInputStream());
reader = new BufferedReader(streamReader);
writer = new PrintWriter(sock.getOutputStream());
System.out.println("Server connection established.");
incoming.append("Server connection established." + "\n");
} catch (IOException ex) {
ex.printStackTrace();
System.out.println("Server connection failed.");
incoming.append("Server connection failed." + "\n");
}
}
// displays messages
class IncomingReader implements Runnable {
public void run() {
String message;
try {
while ((message = reader.readLine()) != null) {
System.out.println("client read " + message);
incoming.append(message+"\n");
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
【问题讨论】:
-
请检查您的
LogCat并粘贴错误。 -
抱歉,这里是:2021-05-19 11:57:05.907 25336-25362/com.jasonkadams.chatappandroidclone E/AndroidRuntime:致命异常:线程 2 进程:com.jasonkadams.chatappandroidclone , PID: 25336 java.lang.NullPointerException: 尝试在 com.jasonkadams.chatappandroidclone.MainActivity$IncomingReader.run(MainActivity .java:99) 在 java.lang.Thread.run(Thread.java:764)
-
请检查您的活动的第 99 行,这就是问题所在;有一个 NullPointerException
标签: java android android-emulator