2012-09-10 28 views
0

在我的應用程序中,你點擊一個啓動畫廊的按鈕。您選擇一張圖像,然後將該圖像裁剪成正方形(1:1)。在該作物的結果上它保存了圖像並將uri推到了一個新的意圖上,該意圖在ImageView中顯示圖像(非常簡單)。它大約有30%的時間工作,但我無法在崩潰中找到任何相似之處。看起來好像在我將它加載到我的設備上進行調試之後,我第一次啓動2次,第三次啓動並崩潰。如果有人能幫助我理解這一點,那我很困惑。我的想法可能是在結果上發生很多事情,而我的意圖是在完成其他任務之前,我的意圖是跳到另一個班級。我也是新來的編碼,所以請忍受我的草率代碼。空指針異常的結果

的logcat:

09-10 11:12:55.291: E/AndroidRuntime(2608): FATAL EXCEPTION: main 
09-10 11:12:55.291: E/AndroidRuntime(2608): java.lang.RuntimeException: Unable to resume activity {com.yourboytyler.shoutgram/com.yourboytyler.shoutgram.go}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=file:///mnt/sdcard/SHOUTgram/pic_1347297141912.jpg (has extras) }} to activity {com.yourboytyler.shoutgram/com.yourboytyler.shoutgram.go}: java.lang.NullPointerException 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2124) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2139) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1672) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.os.Looper.loop(Looper.java:130) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at java.lang.reflect.Method.invoke(Method.java:507) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at dalvik.system.NativeStart.main(Native Method) 
09-10 11:12:55.291: E/AndroidRuntime(2608): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=file:///mnt/sdcard/SHOUTgram/pic_1347297141912.jpg (has extras) }} to activity {com.yourboytyler.shoutgram/com.yourboytyler.shoutgram.go}: java.lang.NullPointerException 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2536) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2111) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  ... 12 more 
09-10 11:12:55.291: E/AndroidRuntime(2608): Caused by: java.lang.NullPointerException 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at com.yourboytyler.shoutgram.go.onActivityResult(go.java:163) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.Activity.dispatchActivityResult(Activity.java:3934) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2532) 
09-10 11:12:55.291: E/AndroidRuntime(2608):  ... 13 more 

代碼:

protected void onActivityResult(int requestCode, 
      int resultCode, Intent data) { 
      //Activity.RESULT_OK 
      if (resultCode == -1) { 
       Toast.makeText(getApplicationContext(), mUri.getPath(), //THIS IS LINE 163 
          Toast.LENGTH_SHORT).show(); 
       b1.setEnabled(true); 
       ImageView imgView=(ImageView)findViewById(R.id.i1); 
       Uri imgUri=Uri.parse("file://" + mUri.getPath()); 
       imgView.setImageURI(imgUri); 

       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putString("uripic", mUri.toString()); 
       editor.commit(); 


       MediaScannerConnection.scanFile(this, 
         new String[] { goldburg.toString() }, null, 
         new MediaScannerConnection.OnScanCompletedListener() { 
        public void onScanCompleted(String path, Uri uri) { 
         Log.i("ExternalStorage", "Scanned " + path + ":"); 
         Log.i("ExternalStorage", "-> uri=" + uri); 
        } 
       }); 




       Intent openConnectPoint2 = new Intent("com.my.pakage.NAME"); //changed for privacy 
       startActivity(openConnectPoint2); 
      } 
      if (resultCode == Activity.RESULT_CANCELED) { 
      b1.setEnabled(true); 
       return; 
      } 



      if (requestCode == CAMERA_RESULT) { 
      Intent intent = new Intent(this, CropImage.class); 
      // here you have to pass absolute path to your file 
      intent.putExtra("image-path", mUri.getPath()); 
      intent.putExtra("scale", true); 
      startActivity(intent); 
     } 



     } 
+1

'由com.yourboytyler.shoutgram.go.on.ActiveResult(go.java:163)產生的java.lang.NullPointerException ...'我想看看哪一行是163。 (在Eclipse中使用Ctrl + L跳轉到特定行。) – Sam

+0

感謝您的快速回復Sam線163是Toast線。它緊跟在if resultCode == -1之後。 (我在我的代碼中評論過,以幫助您找到它) –

+0

我認爲我可以使用-1代替Activity.RESULT_OK嗎?它似乎沒有什麼區別,仍然有隨機啓動時間崩潰。 –

回答

0

從評論長大

從logcat中最重要的信息是:

Caused by: java.lang.NullPointerException 
    at com.yourboytyler.shoutgram.go.onActivityResult(go.java:163) 

你表示這是行163:

Toast.makeText(getApplicationContext(), mUri.getPath(), Toast.LENGTH_SHORT).show(); 

我猜想,mUrinull,但正如你所說,只是有時。當您嘗試在null變量上調用方法時,會引起空指針異常,如.getPath()。所以仔細檢查你設置的位置mUri = ...