2014-02-19 83 views
0

我試圖運行按鈕,點擊一個線程,但它強行關閉,線程ID = 1:螺紋,未捕獲的異常(組= 0x41cd1700)

這裏是代碼退出,

package kulkarni.darpan.vtc; 

import android.os.Bundle; 
import android.os.Handler; 
import android.app.Activity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

Button btnRegister; 
EditText emailRegister; 
CheckBox enDisTracking; 
Handler hand; 
GPSTracker gps; 
AsyncPostRequest asp; 
AsyncRegisterDevice ard; 
DeviceInfo di; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    gps = new GPSTracker(MainActivity.this); 
    di = new DeviceInfo(MainActivity.this); 
    asp = new AsyncPostRequest(); 
    ard = new AsyncRegisterDevice(); 

    btnRegister = (Button) findViewById(R.id.regButton); 
    emailRegister = (EditText)findViewById(R.id.regEmail); 
    enDisTracking = (CheckBox)findViewById(R.id.startTracking); 
    btnRegister.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      //registerDevice(); 
      hand.postDelayed(run, 1000); 
     } 
    }); 
} 

Runnable run = new Runnable() { 

    public void run() 
    { 
     sendLocation(); 
    } 

}; 

public void registerDevice(){ 

    String regEmail = emailRegister.getText().toString(); 
    String regUniqueID = di.getDeviceInfo(); 
    String regObj[] = new String[2]; 
    regObj[0] = regEmail; 
    regObj[1] = regUniqueID; 
    ard.execute(regObj); 
} 

public void sendLocation(){ 

    if(gps.canGetLocation()){ 

     double latitude = gps.getLatitude(); 
     double longitude = gps.getLongitude(); 
     String uniq = di.getDeviceInfo(); 
     String aobj[] = new String[3]; 
     aobj[0]=Double.toString(latitude); 
     aobj[1]=Double.toString(longitude); 
     aobj[2]=uniq; 
     asp.execute(aobj); 

     Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude +"\nIMEI: "+uniq, Toast.LENGTH_LONG).show();  

    }else{ 
     gps.showSettingsAlert(); 
    } 
    hand.postDelayed(run, 20000); 
}  
} 

這裏是日誌文件,

02-19 17:57:29.115: D/Network(29198): Network 
02-19 17:57:29.275: D/libEGL(29198): loaded /system/lib/egl/libEGL_mali.so 
02-19 17:57:29.305: D/libEGL(29198): loaded /system/lib/egl/libGLESv1_CM_mali.so 
02-19 17:57:29.310: D/libEGL(29198): loaded /system/lib/egl/libGLESv2_mali.so 
02-19 17:57:29.315: E/(29198): Device driver API match 
02-19 17:57:29.315: E/(29198): Device driver API version: 23 
02-19 17:57:29.315: E/(29198): User space API version: 23 
02-19 17:57:29.315: E/(29198): mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Wed Oct 9  21:05:57 KST 2013 
02-19 17:57:29.425: D/OpenGLRenderer(29198): Enabling debug mode 0 
02-19 17:57:38.575: D/AndroidRuntime(29198): Shutting down VM 
02-19 17:57:38.575: W/dalvikvm(29198): threadid=1: thread exiting with uncaught exception (group=0x41cd1700) 
02-19 17:57:38.580: E/AndroidRuntime(29198): FATAL EXCEPTION: main 
02-19 17:57:38.580: E/AndroidRuntime(29198): java.lang.NullPointerException 
02-19 17:57:38.580: E/AndroidRuntime(29198): at  kulkarni.darpan.vtc.MainActivity$2.onClick(MainActivity.java:41) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at  android.view.View.performClick(View.java:4475) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at android.view.View$PerformClick.run(View.java:18786) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at android.os.Handler.handleCallback(Handler.java:730) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at android.os.Looper.loop(Looper.java:176) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at android.app.ActivityThread.main(ActivityThread.java:5419) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at java.lang.reflect.Method.invoke(Method.java:525) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
02-19 17:57:38.580: E/AndroidRuntime(29198): at dalvik.system.NativeStart.main(Native Method) 

在這個問題上的任何解決方案?

+0

您還沒有初始化''hand' ... Handler'是 –

回答

2

您還沒有初始化Handler hand。你只有申報。確保在使用之前初始化Handler。

hand = new Handler(); 

看一看@

http://developer.android.com/reference/android/os/Handler.html

+0

也,請仔細檢查你的日誌。它告訴原因:02-19 17:57:38.580:E/AndroidRuntime(29198):java.lang.NullPointerException 02-19 17:57:38.580:E/AndroidRuntime(29198):at kulkarni.darpan.vtc。 MainActivity $ 2.onClick(MainActivity.java:41) – Nostradamus

相關問題