私はMainActivityの別の文字列から文字列を表示したいのですが、文字列がコンソールに表示されています。それはあなたのデータが取り込まれる前あなたはfinalStringを必要とクラスから文字列にアクセスできません
class RetrieveFeedTask extends AsyncTask<Void, Void, String> {
static final String API_URL = "http://numbersapi.com/random/trivia?json";
private Exception exception;
public String finalString;
protected void onPreExecute() { }
protected String doInBackground(Void... urls) {
try {
URL url = new URL(API_URL);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
while ((finalString = bufferedReader.readLine()) != null) {
stringBuilder.append(finalString).append("\n");
}
bufferedReader.close();
return stringBuilder.toString();
}
finally{
urlConnection.disconnect();
}
}
catch(Exception e) {
Log.e("ERROR", e.getMessage(), e);
return null;
}
}
protected void onPostExecute(String response) {
if(response == null) {
response = "THERE WAS AN ERROR";
}
try {
JSONObject object = (JSONObject) new JSONTokener(response).nextValue();
finalString = object.getString("text");
Log.i("Here",finalString);
} catch (JSONException e) {
}
}
public String getString() {
return this.finalString;
}
}
タスクを実行されることはありません。もっとチュートリアルを読むことをお勧めします。 – njzk2
asynctaskは別のスレッドで実行されます。現在、タスクが完了する前に文字列を設定しています。 'onPostExecute'メソッドで文字列を設定します。 –
タスクを開始するためにボタンをクリックすると、タスクは 'TextString'で設定する前に' finalString'を設定する時間がないと思います – Sunshinator