2014-12-09 1 views
0

원격 PC 제어 앱을 구축 중입니다. 내 코드 나는 소켓 연결이 활성화 된 경우에만 새로운 활동을 시작하거나소켓 연결 상태를 확인하려고하면 앱이 왜 끊어 집니까?

class MyActivity extends Activity { 
    static Boolean connect; 
    Socket client; 
SendMessage send; 
    //other codes 
    bSend.setOnclickListener (new View.OnClikcListener() { 
send=new SendMessage(); 
send.execute(); 
     if (connect==true){ 
     Intent I=new Intent (MyActivity.this, SubActivity.class); 
     startActivity (I); 
     } else { 
     tStatus.setText ("Failed"); 
     } 
    }); 
    } 



class Send messages extends AsyncTask < >{ 

protected void doInBackground (.....){ 
    client=new Socket("192.168.237.1", 6666); 
    if(client.isConnected==true){ 
     connect=true; 
     } else { 
    connect=false; 
    } 
    } 
} 

을 활성화되지 않은 사용자에게 통지하고 싶지만 내가 버튼을 클릭하면 응용 프로그램이 실제 문제가 코드에 충돌?

그리고 여기 내 로그인

12-08 21:13:47.930: E SensorManager(11323): thread start 
12-08 21:13:47.935: D SensorManager(11323) registerListener :: handle = 0 name= LSM330DLC 3-axis Accelerometer delay= 200000 Listener= [email protected]db1a58 
12-08 21:13:47.945: D/SensorManager(11323): unregisterListener:: Listener= [email protected]db1a58 
12-08 21:13:47.945: D/Sensors(11323): Remain listener = Sending .. normal delay 200ms 
12-08 21:13:47.945: I/Sensors(11323): sendDelay --- 200000000 
12-08 21:13:47.945: D/SensorManager(11323): JNI - sendDelay 
12-08 21:13:47.945: I/SensorManager(11323): Set normal delay = true 
12-08 21:13:47.985: D/SensorManager(11323): registerListener :: handle = 0 name= LSM330DLC 3-axis Accelerometer delay= 200000 Listener= [email protected]db1a58 
12-08 21:13:48.030: D/libEGL(11323): loaded /system/lib/egl/libEGL_mali.so 
12-08 21:13:48.040: D/libEGL(11323): loaded /system/lib/egl/libGLESv1_CM_mali.so 
12-08 21:13:48.045: D/libEGL(11323): loaded /system/lib/egl/libGLESv2_mali.so 
12-08 21:13:48.050: D/(11323): Device driver API match 
12-08 21:13:48.050: D/(11323): Device driver API version: 10 
12-08 21:13:48.050: D/(11323): User space API version: 10 
12-08 21:13:48.050: D/(11323): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST 2012 
12-08 21:13:48.090: D/OpenGLRenderer(11323): Enabling debug mode 0 
12-08 21:13:50.020: D/AndroidRuntime(11323): Shutting down VM 
12-08 21:13:50.020: W/dalvikvm(11323): threadid=1: thread exiting with uncaught exception (group=0x411302a0) 
12-08 21:13:50.040: E/AndroidRuntime(11323): FATAL EXCEPTION: main 
12-08 21:13:50.040: E/AndroidRuntime(11323): java.lang.NullPointerException 
12-08 21:13:50.040: E/AndroidRuntime(11323): at com.example.workarea.MainActivity$1.onClick(MainActivity.java:49) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at android.view.View.performClick(View.java:4211) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at android.view.View$PerformClick.run(View.java:17267) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at android.os.Handler.handleCallback(Handler.java:615) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at android.os.Looper.loop(Looper.java:137) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at android.app.ActivityThread.main(ActivityThread.java:4898) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at java.lang.reflect.Method.invokeNative(Native Method) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at java.lang.reflect.Method.invoke(Method.java:511) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
12-08 21:13:50.040: E/AndroidRuntime(11323): at dalvik.system.NativeStart.main(Native Method) 
12-08 21:14:07.425: I/Process(11323): Sending signal. PID: 11323 SIG: 9 

답변

0
if (connect==true){ 
    Intent I=new Intent (MyActivity.this, SubActivity.class); 
    startActivity (I); 
    } else { 
    tStatus.setText ("Failed"); 
    } 

이 코드를 async 작업의 onPostExecute 메서드에 추가해야합니다.

+0

감사합니다. 지금은 작동 중입니다. 그리고 다른 활동 (안드로이드 서비스 제외)으로 이동할 때 소켓 연결을 유지하는 방법이 있습니까? –

+0

형님! connect == false이면 텍스트 상자에 "Failed"가 표시됩니다. –

+0

static Boolean connect = false; 이 선언을 변경하십시오. –

0

어디 당신이 AsyncTask를을 실행하는 것입니다? connect 값은 asynctask의 실행에 따라 초기화되는 것처럼 보입니다.

+0

게시물 수정 ... 다시 확인하십시오. –

관련 문제