###前提・実現したいこと
Androidでhttp通信を行い、JSONファイルを取得しようとしています。
そこでまず、jsonファイルを文字列として取得し、それをどのクラスでも使用できるよう、publicなString型変数dataに代入し、別クラスからアクセスし、そこからJSONObjectに変換しようとしています。(一応getData()からアクセスしている)
###発生している問題・エラーメッセージ
他クラス(MainActivity)から試しにLog.d()でアクセスしようとしているのですが、NullPointerException例外が発生してしまいます。
E/AndroidRuntime: FATAL EXCEPTION: main Process: アプリ名, PID: 18636 java.lang.RuntimeException: Unable to start activity ComponentInfo{アプリ名/アプリ名.MainActivity}: java.lang.NullPointerException: println needs a message at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2320) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2380) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5289) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) Caused by: java.lang.NullPointerException: println needs a message at android.util.Log.println_native(Native Method) at android.util.Log.d(Log.java:139) at com.shigaki.sano.safetymap.MainActivity.onCreate(MainActivity.java:58) at android.app.Activity.performCreate(Activity.java:6018) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2273) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2380) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5289) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
###該当のソースコード
//必要なクラスはすべてインポートしてあります。 public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HttpResponsAsync test = new HttpResponsAsync(); test.execute(); Log.d("test",test.getData()); //ここで例外発生 } } public class HttpResponsAsync extends AsyncTask<Void, Void, String> { String data; @Override protected void onPreExecute() { super.onPreExecute(); // doInBackground前処理 } @Override protected String doInBackground(Void... params) { // (1)try-catchによるエラー処理 try { // Basic認証のためUSERNAMEとPASSWORD等の設定をしてあります final String USERNAME = "ユーザー名"; //USERNAME,PASSWORDはちゃんと代入してます final String PASSWORD = "パスワード"; String strURL = "JSONファイルのURL"; //ここもちゃんと代入してます // (2)URLクラスを使用して通信を行う URL url = new URL(strURL); URLConnection connection = url.openConnection(); final String userPassword = USERNAME+":"+PASSWORD; final String encodeAuthorization = Base64.encodeToString(userPassword.getBytes(), Base64.NO_WRAP); connection.setRequestProperty("Authorization", "Basic " + encodeAuthorization); // 動作を入力に設定 connection.setDoInput(true); InputStream stream = connection.getInputStream(); BufferedReader input = new BufferedReader(new InputStreamReader( stream)); // (3)データの取得 String data = ""; String tmp = ""; while ((tmp = input.readLine()) != null) { data += tmp; } // (4)終了処理 stream.close(); input.close(); return data; } catch (Exception e) { // (5)エラー処理 return e.toString(); } } @Override protected void onPostExecute(String result) { super.onPostExecute(result); data = result; Log.d("testtest",data); //ここは正常に出力されます // doInBackground後処理 } public String getData(){ return this.data; } }
###試したこと
HttpResponseAsyncクラス内のonPostExecute()内でdataをLog.d()で出力してみたら、正常に出力されました。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/06 12:19