0

私のアプリでは、ギャラリーを起動するボタンをタップします。画像を選択し、その画像を正方形(1:1)にトリミングします。そのトリミングの結果、画像が保存され、URIが新しいインテントにプッシュされます。このインテントは画像をImageViewに表示します(非常に単純です)。ただし、約30%の確率で機能し、クラッシュに類似点は見つかりません。デバイスにロードしてデバッグした後、最初の2回はクラッシュし、3回目は動作するようです。誰かが私がこれを理解するのを手伝ってくれるなら、私はこれについて非常に混乱しています。私の考えは多分onResultで起こっていることであり、別のクラスにジャンプするという私の意図は、それが他のタスクを完了する前に解雇されています。また、私はコーディングに不慣れなので、私のずさんなコードに耐えてください。

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);  
        }  



        }  
4

1 に答える 1

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、あなたが言ったように、たまにしかありません。.getPath()である変数に対して、などのメソッドを呼び出そうとすると、nullポインタ例外が発生しますnull。だからあなたが設定した場所を再確認してくださいmUri = ...

于 2012-09-11T23:31:40.870 に答える