Soru & Cevap

onActivityResult değer döndürme sorunu

06.04.2016 - 09:53

Arkadaşlar merhaba, android geliştirmede yeni olduğumu belirtmek isterim ve hemen soruma geçiyorum. Basit bir uygulama yaptım ve uygulamamda 2 adet buton var. Birincisi cihazın galerisine giderek seçilen resim dosyasını imageview'e aktarmakta, ikinci buton ise kamera ile çektiğim resmi imageview'e aktarmakta. Sorun ise kullanıcı resim seçmeden ya da fotoğraf çekmeden geri tuşuyla ana ekran döndüğünde hata ile karşılaşıyorum.


"protected void onActivityResult(int requestCode, int resultCode, Intent data)" içerisindeki resultCode değerlerini yazdırdığımda, resim seçimi ya da foto çekimi yapıldığında değeri -1 iken yapılmadığında 0 (sıfır) olmakta. if() bloğu ile bu sonuçlardan herhangi bir çözüm üretemedim. Sorun "data" bilgisinin boş gelmesinden kaynaklı gibi çünkü requestCode değerlerini rasgele değiştirdiğimde program hatasız ana sayfaya dönebiliyor.

İşte kodlar:

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

 if (requestCode==10) {
        ImageView vesikalik = (ImageView) findViewById(R.id.vesikalik);
        Bitmap bitmap = null;

        if (bitmap != null)
            bitmap.recycle

        try {
            InputStream stream = getContentResolver().openInputStream(data.getData());
            bitmap = BitmapFactory.decodeStream(stream);
            stream.close();
            vesikalik.setImageBitmap(bitmap);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    if(requestCode==33) {
        Bitmap image = (Bitmap) data.getExtras().get("data");

        ImageView resim = (ImageView) findViewById(R.id.vesikalik);
        resim.setImageBitmap(image);
    }
}

 

132 Görüntülenme

1 Cevap

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

picture-1372-1408467635.jpg
ahmtbrk
10.05.2016 - 11:51

if bloklarına bir de şunu ekleyebilirsiniz

requestCode == 33 && resultCode == Activity.RESULT_OK

Eğer RESULT_OK ise seçilmiştir yoksa seçilmemiştir. Bu sayede uygulamanın crash olmasını engellersin.