このアプリケーションでは、このアプリケーションでは、名前、電子メールなどのような編集テキストを入力してから、ギャラリーを開くボタンを使用して画像を追加するか、あなたはこの情報をdbに送るためにボタンを押す必要があります。ギャラリーから写真を追加してこの情報を送信すると機能しますが、同じ写真を撮るとアプリがクラッシュします。私は何が問題なのかわからないし、誰かが私を助けてくれて本当に感謝しています。または、この問題の原因となるものを教えてください。アプリケーションヌルオブジェクト参照でクラッシュする
@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)
'cursor.moveToFirst();'このコードはエラーをスローしています。これは、カーソルがnullであることを意味します。 –
しかし、なぜこれは分かりません。それを解決する方法は、ギャラリーから写真を添付するときに同じことが起こらないからです。 @ArjunGurung –
この行には異なるCursor変数を使用してください。 'cursor = getActivity()。getContentResolver()。query(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI、 null、MediaStore.Images.Media._ID + "=? "、新しい文字列[] {document_id}、null); ' – Danger