Not: Bu cevap Android Studio 2.2.2'yi kullanıyor
Not 2: Cihazınızın başarıyla bağlandığını düşünüyorum.
Uygulamanız çöktüğünde yaptığınız ilk şey, LogCat'a bakmaktır, Android Studio'nun altında menülerin listesini içeren bir araç çubuğu vardır:

"Android Monitör" ü tıklayın (Yukarıdaki resimde altını çizdiğim. ^)
Şimdi, böyle bir şey alacaksınız:

" Verbose" İle " " arasında değişiklik yapın ErrorArtık yalnızca size kaydedilen hataları gösterecek. Tüm bu hatalar için endişelenmeyin (eğer varsa).

Tamam. Şimdi, uygulamanızı kilitlemek için ne yaptığınızı yapın. Uygulamanız kilitlendikten sonra logcat'inize gidin. Çok fazla şey içeren yeni bir kilitlenme günlüğü bulmalısınız at:x.x.x: ve Caused by: TrumpIsPresidentExceptionörneğin. Caused by:Logcat'inizdeki ifadeye gidin .

Sonraki için o Caused By:oldu, İstisna olmalıdır. Benim durumumda, bir RuntimeExceptionve altında mavi bir bağlantı içeren bir satır olmalıdır :

O takdirdeCaused by: bunun altında mavi bir metin yerde bir çizgi var ETMEZ, sonra başka bakmak Caused by:yapar.
Bu mavi bağlantıyı tıklayın . Sizi sorunun oluştuğu yere götürmelidir. Benim durumumda, bu satırdan kaynaklanıyordu:
throw new RuntimeException();
Şimdi neden çöktüğünü biliyorum. Çünkü istisnayı kendim atıyorum. Bu bariz bir hataydı .
Ancak, başka bir hatayla karşılaştığımı varsayalım:
java.lang.NullPointerException
Logcat'imi kontrol ettim, bana verdiği mavi bağlantıya tıkladım ve beni buraya götürdü:
mTextView.setText(myString);
Şimdi hata ayıklamak istiyorum. Göre bu StackOverflow soru , bir NullPointerException şey olduğunu söylüyor null.
Neyin boş olduğunu bulalım . İki olasılık var. Ya mTextViewboştur ya myStringda boştur. Öğrenmek için mTextView.setText(mString)satırdan önce şu iki satırı ekliyorum:
Log.d("AppDebug","mTextView is null: " + String.valueOf(mTextView == null);
Log.d("AppDebug","myString is null: " + String.valueOf(myString== null);
Şimdi, daha önce yaptığımız gibi (Verose'u Hata olarak değiştirdik), "Hata" yı "Hata Ayıklama" olarak değiştirmek istiyoruz. Hata ayıklayarak oturum açtığımızdan beri. İşte tüm Log yöntemleri:
Log.
d means Debug
e means error
w means warning
v means verbose
i means information
wtf means "What a terrible failure". This is similar to Log.e
Yani, kullandığımızdan beri Log.dDebug'u kontrol ediyoruz. Bu yüzden hata ayıklamak için değiştirdik.
Bildirimin Log.dilk parametresi vardır, bizim durumumuzda "AppDebug". Logcat'in sağ üst kısmındaki "Filtresiz" açılır menüsünü tıklayın. "Filtre Yapılandırmasını Düzenle" yi seçin, filtrenize bir ad verin ve "Günlük Etiketi" ne "Uygulama Hata Ayıklama" yazın. "Tamam" ı tıklayın. Şimdi, logcat'te iki satır görmelisiniz:
yourPackageNameAndApp: mTextView is null: true
yourPackageNameAndApp: myString is null: false
Artık mTextView'ın boş olduğunu biliyoruz.
Kodumu gözlemliyorum, şimdi bir şey fark ettim.
Ben var private TextView mTextViewbenim sınıfının en üstünde ilan etti. Ama ben onu tanımlamıyorum.
Temelde bunu onCreate () 'de yapmayı unuttum:
mTextView = (TextView) findViewById(R.id.textview_id_in_xml);
mTextViewUygulamamın ne olduğunu söylemeyi unuttuğum için BU NEDEN boş. Bu satırı ekledim, uygulamamı çalıştırıyorum ve şimdi uygulama çökmüyor.