2016-02-11 99 views
0

我在从gallery.String.trim()上传图像时收到空指针异常在运行时抛出的空对象引用。从图库中上传图像时出现空指针异常

下面我已经指出了错误行。

logcat的:

02-11 07:00:20.932: E/selectedImageUri(24696) : content://com.android.providers.media.documents/document/image%3A388 
02-11 07:00:20.935: E/selectedPath1(24696) : null 
02-11 07:00:23.840: E/selectedImageUri(24696) : content://com.android.providers.media.documents/document/image%3A388 
02-11 07:00:23.845: E/selectedPath2(24696) : null 

02-11 07:00:26.004: E/AndroidRuntime(24696): FATAL EXCEPTION: main 
02-11 07:00:26.004: E/AndroidRuntime(24696): Process: com.steve.multipleuploadimage, PID: 24696 
02-11 07:00:26.004: E/AndroidRuntime(24696): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference 
02-11 07:00:26.004: E/AndroidRuntime(24696): at com.steve.multipleuploadimage.MainActivity$3.onClick(MainActivity.java:80) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at android.view.View.performClick(View.java:4756) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at android.view.View$PerformClick.run(View.java:19749) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at android.os.Handler.handleCallback(Handler.java:739) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at android.os.Handler.dispatchMessage(Handler.java:95) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at android.os.Looper.loop(Looper.java:135) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at android.app.ActivityThread.main(ActivityThread.java:5221) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at java.lang.reflect.Method.invoke(Native Method) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at java.lang.reflect.Method.invoke(Method.java:372) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
02-11 07:00:26.004: E/AndroidRuntime(24696): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

MainActivity.java:

b1.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        openGallery(SELECT_FILE1); 
       } 
      }); 
      b2.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        openGallery(SELECT_FILE2); 
       } 
      }); 
      b3.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        if(!(selectedPath1.trim().equalsIgnoreCase("NONE")) && !(selectedPath2.trim().equalsIgnoreCase("NONE"))){ ----> 80th line 
         progressDialog = ProgressDialog.show(MainActivity.this, "", "Uploading files to server.....", false); 
         Thread thread=new Thread(new Runnable(){ 
           public void run(){ 
            doFileUpload(); 
            runOnUiThread(new Runnable(){ 
             public void run() { 
              if(progressDialog.isShowing()) 
               progressDialog.dismiss(); 
             } 
            }); 
           } 
         }); 
         thread.start(); 
        }else{ 
           Toast.makeText(getApplicationContext(),"Please select two files to upload.", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }); 

     } 

     public void openGallery(int req_code){ 

      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(Intent.createChooser(intent,"Select file to upload "), req_code); 
     } 

     public void onActivityResult(int requestCode, int resultCode, Intent data) { 

      if (resultCode == RESULT_OK) { 
       Uri selectedImageUri = data.getData(); 

       Log.e("selectedImageUri",""+selectedImageUri); 

       if (requestCode == SELECT_FILE1) 
       { 
        selectedPath1 = getPath(selectedImageUri); 

        Log.e("selectedPath1", ""+selectedPath1); 
       } 
       if (requestCode == SELECT_FILE2) 
       { 
        selectedPath2 = getPath(selectedImageUri); 

        Log.e("selectedPath2", ""+selectedPath2); 

       } 
       tv.setText("Selected File paths : " + selectedPath1 + "," + selectedPath2); 
      } 
     } 

     public String getPath(Uri uri) { 
      String[] projection = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = managedQuery(uri, projection, null, null, null); 
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      return cursor.getString(column_index); 
     } 

     private void doFileUpload(){ 

      File file1 = new File(selectedPath1); 
      File file2 = new File(selectedPath2); 
      String urlString = "http://10.0.2.2/upload_test/upload_media_test.php"; 
      try 
      { 
       HttpClient client = new DefaultHttpClient(); 
       HttpPost post = new HttpPost(urlString); 
       FileBody bin1 = new FileBody(file1); 
       FileBody bin2 = new FileBody(file2); 
       MultipartEntity reqEntity = new MultipartEntity(); 
       reqEntity.addPart("uploadedfile1", bin1); 
       reqEntity.addPart("uploadedfile2", bin2); 
       reqEntity.addPart("user", new StringBody("User")); 
       post.setEntity(reqEntity); 
       HttpResponse response = client.execute(post); 
       resEntity = response.getEntity(); 
       final String response_str = EntityUtils.toString(resEntity); 
       if (resEntity != null) { 
        Log.i("RESPONSE",response_str); 
        runOnUiThread(new Runnable(){ 
          public void run() { 
           try { 
            res.setTextColor(Color.GREEN); 
            res.setText("n Response from server : n " + response_str); 
            Toast.makeText(getApplicationContext(),"Upload Complete. Check the server uploads directory.", Toast.LENGTH_LONG).show(); 
           } catch (Exception e) { 
            e.printStackTrace(); 
           } 
           } 
         }); 
       } 
      } 
      catch (Exception ex){ 
       Log.e("Debug", "error: " + ex.getMessage(), ex); 
      } 
      } 

任何人都可以帮我解决这个issue.Thank你。

+0

'selectedPath1'和'selectedPath2'都为null,你也可以看到它在你的logcat –

+0

@RRR都为null – UserAgr

+0

你知道,无论是空的,比你还正在对此进行操作 –

回答

0

您的字符串selectedPath2似乎是空的。

做此项检查:

if(selectedPath2!= null && !selectedPath2.isEmpty()) 
{ 
if(!(selectedPath1.trim().equalsIgnoreCase("NONE")) && !(selectedPath2.trim().equalsIgnoreCase("NONE"))){ ----> 80th line 
    ............................    . 
}