0

Im nouveau sur android, et dans cette application, vous devez remplir un edittext, comme nom, email, etc, puis ajouter une image en utilisant un bouton qui ouvre la galerie ou un autre bouton qui prend un image et et après cela, vous devez appuyer sur un bouton pour envoyer cette information à un db. Cela fonctionne si j'ajoute l'image de la galerie, et envoie cette information, mais quand je fais la même chose en prenant une photo, l'application se bloque. Je ne sais pas quel pourrait être le problème et j'apprécierais vraiment que quelqu'un m'aide. Ou dites-moi ce qui peut causer ce problème.App Crashes sur une référence d'objet nul

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode == CAM_REQUEST && resultCode == Activity.RESULT_OK){ 

try { 
bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), (filePath)); 
getActivity().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, filePath)); 
} catch (IOException e) { 
      e.printStackTrace(); 
     } 

}else if (requestCode == PICK_IMAGE_REQUEST && resultCode == Activity.RESULT_OK) { 
     filePath = data.getData(); 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), filePath); 
      imageView.setImageBitmap(bitmap); 

      areaLeyendaImagen.setVisibility(View.VISIBLE); 
      areaFotoCargada.setVisibility(View.VISIBLE); 
      imagencargada.setVisibility(View.VISIBLE); 
      textoimagencargada.setVisibility(View.VISIBLE); 
      area_cerrarIagen.setVisibility(View.VISIBLE); 
      cerrarImagen.setVisibility(View.VISIBLE); 
      buttonChoose.setError(null); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

public String getPath(Uri uri) { 
    Cursor cursor = getActivity().getContentResolver().query(uri, null, null, null, null); 
    cursor.moveToFirst(); 
    String document_id = cursor.getString(0); 
    document_id = document_id.substring(document_id.lastIndexOf(":") + 1); 
    cursor.close(); 

    cursor = getActivity().getContentResolver().query(
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
      null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null); 
    cursor.moveToFirst(); 
    String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); 
    cursor.close(); 

    return path; 
} 

LogCat:

08-20 23:23:53.320 11022-11022/com.example.lupitagarcia.yosoyvallarta E/AndroidRuntime: FATAL EXCEPTION: main 
                        Process: com.example.lupitagarcia.yosoyvallarta, PID: 11022 
                        java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference 
                         at com.example.lupitagarcia.yosoyvallarta.TerminosYC.getPath(TerminosYC.java:579) 
                         at com.example.lupitagarcia.yosoyvallarta.TerminosYC$1.onClick(TerminosYC.java:355) 
                         at android.view.View.performClick(View.java:5721) 
                         at android.widget.TextView.performClick(TextView.java:10936) 
                         at android.view.View$PerformClick.run(View.java:22620) 
                         at android.os.Handler.handleCallback(Handler.java:739) 
                         at android.os.Handler.dispatchMessage(Handler.java:95) 
                         at android.os.Looper.loop(Looper.java:148) 
                         at android.app.ActivityThread.main(ActivityThread.java:7406) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
+0

'cursor.moveToFirst();' ce code est une erreur de lancement signifie que le curseur est null. –

+0

Mais je ne sais pas pourquoi est-ce. ou comment le résoudre, car il ne se passe pas la même chose en attachant une image de la galerie. @ArjunGurung –

+0

Utilisez une variable Cursor différente dans cette ligne: 'cursor = getActivity(). GetContentResolver(). Query (android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Media._ID + "=? ", new String [] {document_id}, null); ' – Danger

Répondre

0

Semble aucun effort! quand même essayer ce

if(mCursor!=null && mCursor.getCount()>0){ 
    mCursor.moveToFirst(); 
} 

La raison en est votre #uri, comme vous obtenez là valeur nulle. Assurez-vous d'abord que vous obtenez une bonne image uri ou non!

+0

Merci, essayez-le. –

+0

Ajout de ce code, l'application se bloque sur une autre ligne String document_id = cursor.getString (0); –

+0

pourriez-vous essayer de le déboguer? est le compilateur va à si la condition que je mentionne dans la réponse ci-dessus. Si NON, vous êtes interrogé sur votre corsor de la mauvaise manière. – Radhey