我對以下內容有點問題。我在我的筆記本電腦上有一個運行在Java中的TCP服務器,並且正在開發一個Android應用程序,它將在X按鈕被按下時向服務器發送一個字符串。我一直在四處尋找,並沒有找到任何解脫。我的Android應用程序中的NullPointerException
我測試過我的手機能夠連接到筆記本電腦(同樣的Wifi),它工作得很好,但我所做的應用程序不會。
主要活動代碼:
public class MainActivity extends Activity {
private String serverIpAddress = "10.30.13.110";
private int serverPort = 50505;
private boolean connected = false;
final Button button1 = (Button) findViewById(R.id.Button1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
button1.setOnClickListener(onClickListener);
}
private OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(final View v) {
switch(v.getId()){
case R.id.Button1:
if (!connected) {
Thread cThread = new Thread(new ClientThread());
cThread.start();
}
break;
}
}
};
public class ClientThread implements Runnable {
public void run() {
try {
Log.d("ClientActivity", "C: Connecting...");
Socket socket = new Socket(serverIpAddress, serverPort);
connected = true;
while (connected) {
try {
Log.d("ClientActivity", "C: Sending command.");
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
out.println("Hey Server!");
Log.d("ClientActivity", "C: Sent.");
} catch (Exception e) {
Log.e("ClientActivity", "Error", e);
}
}
socket.close();
Log.d("ClientActivity", "C: Closed.");
} catch (Exception e) {
Log.e("ClientActivity", "Error", e);
connected = false;
}
}
}
}
logcat的錯誤:
04-24 18:07:44.158: E/AndroidRuntime(20554): FATAL EXCEPTION: main
04-24 18:07:44.158: E/AndroidRuntime(20554): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.project1test/com.example.project1test.MainActivity}: java.lang.NullPointerException
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173)
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2297)
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.app.ActivityThread.access$700(ActivityThread.java:152)
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.os.Looper.loop(Looper.java:137)
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.app.ActivityThread.main(ActivityThread.java:5328)
04-24 18:07:44.158: E/AndroidRuntime(20554): at java.lang.reflect.Method.invokeNative(Native Method)
04-24 18:07:44.158: E/AndroidRuntime(20554): at java.lang.reflect.Method.invoke(Method.java:511)
04-24 18:07:44.158: E/AndroidRuntime(20554): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
04-24 18:07:44.158: E/AndroidRuntime(20554): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
04-24 18:07:44.158: E/AndroidRuntime(20554): at dalvik.system.NativeStart.main(Native Method)
04-24 18:07:44.158: E/AndroidRuntime(20554): Caused by: java.lang.NullPointerException
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.app.Activity.findViewById(Activity.java:1886)
04-24 18:07:44.158: E/AndroidRuntime(20554): at com.example.project1test.MainActivity.<init>(MainActivity.java:23)
04-24 18:07:44.158: E/AndroidRuntime(20554): at java.lang.Class.newInstanceImpl(Native Method)
04-24 18:07:44.158: E/AndroidRuntime(20554): at java.lang.Class.newInstance(Class.java:1319)
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.app.Instrumentation.newActivity(Instrumentation.java:1071)
04-24 18:07:44.158: E/AndroidRuntime(20554): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2164)
我很新到Android編程,因此任何指導,將不勝感激。謝謝
另一個問題與findViewById使用之前setContentView ... – Selvin
Selvin - 我很抱歉,但我怎麼能解決這個問題? – user3570967
是不是很明顯?你應該在** setContentView之後使用findViewById ** ... – Selvin