0

我開始下面的活動時我正在使用android我有一個強制關閉我的android模擬器。我認爲這是由於getstringExtra()中的空值,但我找不到它。任何一個可以講是本次活動開始一個活動時的空指針異常

public class Cancel_parkActivity extends Activity implements LocationListener{ 


     String p_u_name; 
     HttpPost httppost; 
     StringBuffer buffer; 
     HttpResponse response; 
     HttpClient httpclient; 
     List<NameValuePair> nameValuePairs; 
     ProgressDialog dialog = null; 
     LocationManager locManager; 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.cancel_park); 

       Intent in = getIntent(); 
       p_u_name = in.getExtras().getString("KEY_USERNAME"); 

        System.out.println(" Cancel_park : your name is"+p_u_name); 

        dialog = ProgressDialog.show(Cancel_parkActivity.this, "", 
          "Cancel parking...", true); 
        new Thread(new Runnable() { 
          public void run() { 
           cancelpark();       
          } 
          }).start(); 

        } 

     public void cancelpark(){ 
      try{ 
       httpclient=new DefaultHttpClient(); 
       httppost= new HttpPost("http://10.0.2.2/test_login/deletepark.php"); 

       nameValuePairs = new ArrayList<NameValuePair>(2); 

       String KEY_DELETE = "delete"; 
       nameValuePairs.add(new BasicNameValuePair(KEY_DELETE,"")); 
       nameValuePairs.add(new BasicNameValuePair("username",p_u_name.trim())); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
       final String response = httpclient.execute(httppost, responseHandler); 
       System.out.println("Response : " + response); 
       runOnUiThread(new Runnable() { 
        public void run() { 
         System.out.println("Response from PHP : " + response); 
         dialog.dismiss(); 
        } 
       }); 

       if(response.equalsIgnoreCase("Success")){ 
        runOnUiThread(new Runnable() { 
         public void run() { 
          Toast.makeText(Cancel_parkActivity.this,"Last parking canceled", Toast.LENGTH_SHORT).show(); 

         } 
        }); 

//     startActivity(new Intent(LoginActivity.this, MainActivity.class)); 
       }else{ 
        Toast.makeText(Cancel_parkActivity.this,"fucking", Toast.LENGTH_SHORT).show(); 

       } 

      }catch(Exception e){ 
       dialog.dismiss(); 
       System.out.println("Exception : " + e.getMessage()); 
      } 
     } 
     public void showAlert(){ 
      Cancel_parkActivity.this.runOnUiThread(new Runnable() { 
       public void run() { 
        AlertDialog.Builder builder = new AlertDialog.Builder(Cancel_parkActivity.this); 
        builder.setTitle("Parking Error."); 
        builder.setMessage("Try again?.") 
          .setCancelable(false) 
          .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, int id) { 
            Intent r = new Intent(getApplicationContext(),Park_HereActivity.class); 
            startActivity(r); 
           } 
          });      
        AlertDialog alert = builder.create(); 
        alert.show();    
       } 
      }); 

     } 
     public void onLocationChanged(Location arg0) { 
      // TODO Auto-generated method stub 

     } 
     public void onProviderDisabled(String provider) { 
      // TODO Auto-generated method stub 

     } 
     public void onProviderEnabled(String provider) { 
      // TODO Auto-generated method stub 

     } 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
      // TODO Auto-generated method stub 

     } 
    } 

的錯誤,我得到空指針異常喜歡這個

10-20 17:42:50.044: E/AndroidRuntime(1983): FATAL EXCEPTION: main 
10-20 17:42:50.044: E/AndroidRuntime(1983): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.oranz.epark/com.oranz.epark.Cancel_parkActivity}: java.lang.NullPointerException 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.app.ActivityThread.access$600(ActivityThread.java:122) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.os.Looper.loop(Looper.java:137) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.app.ActivityThread.main(ActivityThread.java:4340) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at java.lang.reflect.Method.invoke(Method.java:511) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at dalvik.system.NativeStart.main(Native Method) 
10-20 17:42:50.044: E/AndroidRuntime(1983): Caused by: java.lang.NullPointerException 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at com.oranz.epark.Cancel_parkActivity.onCreate(Cancel_parkActivity.java:43) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.app.Activity.performCreate(Activity.java:4465) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
10-20 17:42:50.044: E/AndroidRuntime(1983):  ... 11 more 
+0

你是如何開展這項活動? –

+0

提示:找出拋出NULL指針的快速方法是在代碼周圍放置一個try/catch塊(本例中爲43行)。然後記錄錯誤以確切地查看造成問題的原因。這也將允許您的代碼不強制關閉。 – Booger

回答

1

入住這行代碼:

Cancel_parkActivity.java:43 

也許getIntent() .getExtras()爲空?

+0

但我發送以前類的putExtr值 –

+0

什麼是來自您的源的第43行?如果它是getIntent()。getExtras(),那麼extras對象肯定是null。您必須通過在該行上放置斷點進行調試。你是否從多個地方啓動了Cancel_parkActivity?如果是這樣,那麼其中一個不發送額外信息,如果第43行是getIntent()。getExtras() – praneetloke

1
Intent myIntent= getIntent(); // gets the previously created intent 
    String firstKeyName = intent.getStringExtra("KEY_USERNAME"); 

試試這個方法。

感謝

0
p_u_name = getIntent().getStringExtra("KEY_USERNAME"); 

p_u_name throw NullPointer so please check the before Activity class 
Example : 

Intent intent = new Intent(this, Cancel_parkActivity.class); 
intent.putExtra("KEY_USERNAME", your_Value); 
startActivity(intent); 

請上述編碼,那麼您可以輕鬆地找到解決方案