注:この回答は Android Studio 2.2.2 を使用しています
注 2: あなたのデバイスは正常に接続されていると考えています。
アプリケーションがクラッシュしたときに最初に行うことは、LogCat を調べることです。Android Studio の下部に、メニューのリストを含むツールバーがあります。

「Android Monitor」をクリックします(上の画像で下線を引いたものです。^)
これで、次のようなものが得られます。

Verbose
" " を " " に変更Error
すると、ログに記録されたエラーのみが表示されます。これらすべてのエラー (エラーが発生した場合) について心配する必要はありません。

Ok。次に、アプリをクラッシュさせるために行ったことを実行します。アプリがクラッシュしたら、logcat に移動します。たとえば、多くのat:x.x.x
: を含む新しいクラッシュ ログが見つかるはずです。logcat のCaused by: TrumpIsPresidentException
そのステートメントに移動します。Caused by:

その横にCaused By:
、発生した例外があるはずです。私の場合、それは であり、RuntimeException
その下に次のような青いリンクを含む行があるはずです:

そのCaused by:
下のどこかに青いテキストの行がない場合は、別の行を探してくださいCaused by:
。
その青いリンクをクリックします。問題が発生した場所に移動する必要があります。私の場合、それは次の行が原因でした:
throw new RuntimeException();
これで、クラッシュする理由がわかりました。自分で例外をスローしているためです。これは明らかなエラーです。
ただし、別のエラーが発生したとしましょう。
java.lang.NullPointerException
logcat を確認し、表示された青いリンクをクリックすると、次の場所に移動しました。
mTextView.setText(myString);
だから、今私はデバッグしたい。この StackOverflow questionによると、NullPointerException は何かがnull
.
それでは、 null とは何かを調べてみましょう。2 つの可能性があります。mTextView
null であるか、nullmyString
です。調べるために、行の前にmTextView.setText(mString)
次の 2 行を追加します。
Log.d("AppDebug","mTextView is null: " + String.valueOf(mTextView == null);
Log.d("AppDebug","myString is null: " + String.valueOf(myString== null);
ここで、以前に行ったように (Verose を Error に変更しました)、"Error" を "Debug" に変更します。デバッグでログを記録しているため。すべての Log メソッドは次のとおりです。
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
を使用したので、Log.d
Debug でチェックインします。そのため、デバッグに変更しました。
NoticeLog.d
には、最初のパラメーター (この場合は "AppDebug") があります。logcat の右上にある [No Filters] ドロップダウン メニューをクリックします。[フィルター構成の編集] を選択し、フィルターに名前を付けて、[ログ タグ] に「App Debug」と入力します。「OK」をクリックします。これで、logcat に次の 2 行が表示されます。
yourPackageNameAndApp: mTextView is null: true
yourPackageNameAndApp: myString is null: false
これで、mTextView が null であることがわかりました。
コードを観察すると、何かに気づきました。
私はprivate TextView mTextView
クラスのトップで宣言しました。しかし、私はそれを定義していません。
基本的に、onCreate() でこれを行うのを忘れていました。
mTextView = (TextView) findViewById(R.id.textview_id_in_xml);
mTextView
アプリにそれが何であるかを伝えるのを忘れたので、それがnullである理由です。そのため、その行を追加してアプリを実行すると、アプリはクラッシュしなくなりました。