Soru & Cevap

Merhaba Android studioda permission ile iligili problem ...

29.04.2020 - 01:42

Merhaba ben android studio ile permission la kullanıcıdan izin isteyip onun yerel hafızasına girip foto çekicem ama geynmotion emülatöre foto attığım halde program null çekip hata veriyor.

2020-04-28 22:24:38.759 3840-3840/com.sametbalci.artbook E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.sametbalci.artbook, PID: 3840
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { dat=content://media/external/images/media/37 flg=0x1 }} to activity {com.sametbalci.artbook/com.sametbalci.artbook.Main2Activity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageBitmap(android.graphics.Bitmap)' on a null object reference
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4361)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4403)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6680)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageBitmap(android.graphics.Bitmap)' on a null object reference
        at com.sametbalci.artbook.Main2Activity.onActivityResult(Main2Activity.java:74)
        at android.app.Activity.dispatchActivityResult(Activity.java:7454)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4354)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4403) 
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6680) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

Aldığım hatalar bunlar büyük ihtimalle geny den kaynaklı bir hata çözümü bilen biri yardım edebilirmi

4 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user f.erenyucal
f.erenyucal
16.02.2023 - 05:06

Merhaba, hatanın nedeni nullPointerException yani kodunuzun bir nesneye atama yapmaya çalışırken null olduğunu gösteriyor. Özellikle hatanın Main2Activity sınıfındaki onActivityResult metodunda ImageView'a bitmap atamaya çalışırken gerçekleştiği belirtilmiş

Emülatörde fotoğraf çekip döndürdükten sonra, onActivityResult metodunda ImageView nesnesini almanız ve null kontrolü yapmanız gerekiyor. Kodunuzda bu kontrol yapılmamış, bu nedenle uygulama hata veriyor. İlgili kod bloğunu şu şekilde güncelleyebilirsiniz:

 

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 2 && resultCode == RESULT_OK && data != null){
        Uri imageData = data.getData();
        try {
            if(imageData != null){
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageData);
                imageView.setImageBitmap(bitmap);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}