2011-04-14 26 views
0

我在Android上有一个客户端服务器应用程序,它们都运行在同一台机器上。 在我的客户端应用程序的第一个活动中,我尝试调用应该连接到服务器应用程序的客户端类,但是我得到了强制关闭。尝试调用实现客户端线程的类时强制关闭

这是我如何调用客户端类在我的应用程序的第一个活动:

Thread cThread=new Thread(new ClientThread()); 
cThread.start(); 

,这里是我的客户端类:

public class ClientThread implements Runnable{ 
    private Handler handler=new Handler(); 
    Socket socket; 
    private TextView clientState; 
    public void run() 
    { 
     try 
     { 
      InetAddress serverAddr=InetAddress.getByName("10.0.2.2"); 
      handler.post(new Runnable(){ 
       public void run(){ 
        clientState.setText(" try to connect!"); 
       } 
      }); 
     socket=new Socket(serverAddr, 8080); 

      //connected=true; 
     handler.post(new Runnable(){ 
       public void run(){ 
        clientState.setText("Connected!"); 
       } 
      }); 

     } 
     catch(Exception e){ 
      handler.post(new Runnable(){ 
       public void run(){ 
        clientState.setText("Error"); 
        } 
      }); 

      e.printStackTrace(); 
     } 

    } 

     protected void onStop() { 
      super.onStop(); 
      try { 
       // make sure you close the socket upon exiting 
       //out.close(); 
       socket.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

} 

谁能告诉我,什么是错的,或者至少给我一个ideea。 我应该说的一件事是,我的客户端工作正常 - 它连接到服务器,当客户端类被集成到我的第一个活动中(我的意思是,最初我没有客户端类都在第一个活动中......并且它工作得很好)。 我来了解更多详情! 提前感谢您!

+0

你可以发布堆栈跟踪吗? – AedonEtLIRA 2011-04-14 20:37:41

回答

1

没有堆栈跟踪它看起来像崩溃,因为你没有初始化textview。

package com.example.helloandroid; 

import android.app.Activity; 
import android.os.Bundle; 

public class HelloAndroid extends Activity { 
    TextView tv; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     tv = (TextView)findViewById(R.id.mytextview); 
    } 

    public class ClientThread extends Thread { 
    ...// Do NOT init textview 
    } 
} 
+0

TextView我在第一个活动的XML中使用它... – adrian 2011-04-14 20:41:31

+0

这可能是事实,但您似乎在此类中创建了一个新的TextView。而且你从来没有在课堂上启动它。 – AedonEtLIRA 2011-04-14 20:48:08

+0

螺纹[<3>主](挂起(断点在屏蔽1第26行))\t \t screen1.onCreate(束)线:26 \t \t Instrumentation.callActivityOnCreate(活动,分发包)线:1047 \t \t ActivityThread.performLaunchActivity( ActivityThread $ ActivityRecord,意图)线:2459 \t \t ActivityThread.handleLaunchActivity(ActivityThread $ ActivityRecord,意图)线:2512 \t \t ActivityThread.access $ 2200(ActivityThread,ActivityThread $ ActivityRecord,意图)线:119 \t \t ActivityThread $ H.handleMessage(消息)线:1863年\t \t $ ActivityThread H(处理程序).dispatchMessage(消息)线:99 – adrian 2011-04-14 20:48:43

相关问题