"Junior Android geliştiricilere tavsiyeler" yazı dizisinin 6. bölümünde Android uygulama geliştirmeye ilk başladığımız zamanlarda sıklıkla karşılaşılan hatalar, uygulamalarda görülen exceptionlar gibi konulardan bahsetmek istiyorum.

ActivityNotFoundException

Ben Android uygulama geliştirmeye ilk başladığım zamanlarda IDE olarak Eclipse kullanılıyordu. Proje içerisinde bir activity oluşturup arayüz ve fonksiyonel işlemleri düzenledikten sonra uygulamayı telefonda veya emülatörde run ettiğimizde kullandığımız startActivity() metodunun çalışmasıyla uygulamanın crash olduğunu görürdük.

android.content.ActivityNotFoundException: Unable to find explicit activity class
Burada aslında crash raporunu veya stack trace’ e baktığımızda mesaj gayet net olarak karşımızda duruyor. Hata mesajının bize söylediği mesaj tercüme edecek olursak, tanımlanan activity’ nin bulunamadığı sonucuna ulaşırız.

PHP- Kodu:
<activity
android
:name=".ExampleActivity"
/> 
Bu hatayı çözmek için yapmamız gereken ise Android Manifest dosyasına, uygulama içerisinde yer alan bütün activity’ leri tanımlamamız gerekmektedir. Android Studio yardımıyla activity’ leri tanımlıyorsanız eğer, tanımlamış olduğunuz activity’ leri Manifest dosyasına unutmanız çok zor olacaktır.



R.layout.main Cannot Be Found / Cannot resolve symbol R

Bu sorunu IDE üzerinde gördüğümüzde temel olarak iki tane aksiyon gerçekleştiriyoruz. Build > Clean veya Build > Rebuild Project işlemlerini gerçekleştirmeyi deneriz. Genel olarak bu aksiyonlar sorunu çözecektir ve siz de tekrardan kod yazmaya devam edebileceksinizdir.

Eğer bu işlemlerden sonra aynı hata mesajını almaya devam ediyorsanız, yapmanız gereken şey layout dosyalarınızı kontrol etmeniz olacaktır. Büyük ihtimalle xml dosyalarının bir tanesinde hatalı bir kullanım mevcut durumdadır. Bu hatayı bulup, çözdükten sonra yukarıda işlemleri tekrarladığınız zaman hatanın çözüldüğünü göreceksiniz.

Only the original thread that created a view hierarchy can touch its views

Bu hata development sırasında oldukça sık karşılan bir sorundur. Anlamı ise, temel anlamda kullanmış olduğunuz view için UI thread dışında bir başka thread üzerinden işlemler yapmaya çalışmanızdır. UI elemanları ile ilgili bütün işlemlerinin doğrudan UI thread üzerinde gerçekleştirilmesi gerekmektedir. Bütün bunlara rağmen bir başka thread içerisinden bu elemanlara erişmeniz gerekecekse runOnUiThread yapısını kullanabilirsiniz.

NetworkOnMainThreadException

Bu hata mesajı ise, geliştirmekte olduğunuz uygulamada gerçekleşen network işlemlerinin Main Thread içerisinde yapılmaya çalışıldığı anlamına gelmektedir. Bir başka durumda ise, Main Thread’ i uzun süre bloklayan işlemler gerçekleştirdiğiniz zaman Application Not Responding hatasını alacaksınızdır.

Bu hata mesajları ile karşılaşmamak adına Main Thread’i bloklayacak olan network request işlemleri gibi durumları gerçekleştirmek amacıyla bir başka thread yapısı tanımlamanız gerekmektedir.

Uyarı:

Bu yazı içerisinde kullanılan konu başlıkları için aşağıda linkini paylaştığım makale referans olarak alınmıştır.

https://www.codementor.io/android/tu...ow-to-fix-them

Android uygulama geliştirme temelinde yazdığım blog yazılarına aşağıdaki linkten ulaşabilirsiniz.

MuratCanBatur