Анализ информации из URL-запроса не работает / не найден TextView

Мне нужна ваша помощь. Я хочу отправить запрос URL, получить ответ и создать объект JSON. Моя первая попытка была совершенно неверной. Теперь я нашел учебник и сделал новую попытку.

Моя активность выглядит так:

public class Patienten extends Activity {

//Beacon Elemente
private String UUID;
private String Major;
private String Minor;

private TextView output;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_patienten);
    output = (TextView) findViewById(R.id.output);
    UpdateBeaconInformation();

    Button cmdHit = (Button) findViewById(R.id.cmd_hit);
    cmdHit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new JSONTask().execute("//http://kusber-web.de/JsonTest.txt");
        }
    });


    setTitle(Surname + ", " + FirstName);
   // output.setText(output.getText().toString() + "Gefundener Patient:\n" + "Name: " + Surname + ", " + FirstName + "\nGeb.-Dat: " + Birthdate);
}

Затем я создал новый Java-класс и создал asyncTask. Но я не могу получить доступ к выводу textview в onPostExecute, чтобы обновить его.

public class JSONTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... urls) {
    HttpURLConnection connection = null;
    BufferedReader reader = null;
    try {

        //http://kusber-web.de/JsonTest.txt
        //http://nilsbenning.selfhost.me/PatientFinder.php?beacon_comID=5181f8a3-7354-46ac-b22d-952ec395ab06&beacon_major=12&beacon_minor=249
        URL url = new URL(urls[0]);
        connection = (HttpURLConnection) url.openConnection();
        connection.connect();

        InputStream stream = connection.getInputStream();

        reader = new BufferedReader(new InputStreamReader(stream));

        StringBuffer buffer = new StringBuffer();
        String line;
        while ((line = reader.readLine()) != null) {
            buffer.append(line);
        }

        return buffer.toString();

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (connection != null) {
            connection.disconnect();
        }
        try {
            if (reader != null) {
                reader.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    return null;
}

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    output.setText(result);

}

} В чем моя ошибка? Почему я не могу получить к нему доступ? Я видел это как решение здесь, но не заставил это работать:

/questions/20639463/android-kak-obnovit-polzovatelskij-interfejs-iz-asynctask-esli-asynctask-nahoditsya-v-otdelnom-klasse/20639485#20639485

Надеюсь, вы можете помочь мне сейчас!:)

1 ответ

Решение

Вы, вероятно, хотите исправить это (удалить косую черту):

new JSONTask().execute("//http://kusber-web.de/JsonTest.txt");

В JSONTask вы можете ссылаться на членов Patienten, используя Patienten.this, Так в onPostExecute Вы должны изменить это:

output.setText(result);

чтобы:

Patienten.this.output.setText(result);
Другие вопросы по тегам