質問: new ClientAsyncTask(etAddress, etPort, etMessage); sc.execute(); } } } ``` ### 試したこと if文の外で出力するとdataの中身は取得できるがtagIdがnullになってしまいます。 現在のソースではtagIdの値は受け取れているがdataの値がnullになってしまう。
回答: スコープの話も関係していますが、すでに指摘されているようにスコープの問題が要因ではないと思われます。 AndroidManifest.xml ファイルの指定にもよりますが、Activity.onCreate() が呼ばれるのは NFCタグを読んだ時、アプリが起動した時、と複数のケースが発生します。 そんな場合にifの内、外でdataが取れる状況が変わりえます。 例えば、アプリを起動しただけではonCreateが呼ばれるものの、NFCタグは読んでいないので NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)には引っかかりません。 デバッガーの使い方もそうですが、デバッガーが使えない状況でもデバッグできるよう、 画面にTextViewを張り付けてメッセージを表示するなどして、確実に確認できるように するのが先決かと思われます。 それと、Activityのライフサイクル(onCreate~onResume~...)の意識も重要となります。 onCreate()は普通は1回だけ呼ばれますが、今回のケースでは何回か呼ばれていると思います。 (Androidの問題ではありません)