У меня проблема с использованием setText()
, и я отчаиваюсь.
Если я нажму на b3, я объявлю тему, а затем начну ее. Код в потоке не важен, он будет считывать некоторые данные с веб-сайта и записывать их в массив о результате операции.
Это работает нормально. Но прежде чем я начну тему, я хочу установить текст «Проверить ...». Но это не работает. Я написал строку setText почти везде, использовал несколько методов отсюда (например, Handler
), но ни один из них не работает, и текст "Prüfe ..." не будет отображаться в моем текстовом просмотре.
Пожалуйста, помогите мне!
//Textfelder und Standardtext
textEingabe = (TextView) findViewById(R.id.editText);
textInfo = (TextView) findViewById(R.id.textInfo);
textInfo.setText("Voraussetzungen: Arduino muss einmal durchgelaufen sein. Außerdem müssen sich Handy und Arduino im selben Netzwerk befinden um die Werte abzurufen. Wenn dies alles erfüllt ist und im Textfeld die richtige IP" +
" ist, auf IP prüfen drücken.");
//Prüfbutton versucht Werte von Website URL abzurufen und speichert die Werte und setzt je nach Ausgang einen aktualisierten Text.
Button b3 = (Button) findViewById(R.id.buttonIP);
b3.setVisibility(VISIBLE);
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
urlString = textEingabe.getText().toString();
Thread thread = new Thread() {
@Override
public void run() {
pruefen = false;
try {
//URL erstellen
URL url = new URL(urlString);
URLConnection urlconnection = url.openConnection();
urlconnection.setReadTimeout(5000);
urlconnection.setConnectTimeout(10000);
// Öffnet URL Stream und liest Website aus
BufferedReader in = new BufferedReader(new InputStreamReader(urlconnection.getInputStream()));
String str;
boolean isWinkel = true;
int j=0;
int i=0;
//wenn Werte mit .beginnen sind es Winkel oder Abstände und werden bis zum nächsten Punkt in der Zeile ausgelesen.
while ((str = in.readLine()) != null) {
//0 ist Winkel
//1 ist Abstand
if (str.charAt(j) == '.') {
pruefen=true; //da . vorhanden ist sind auch Daten vorhanden
j++;
String work="";
do {
work = work + str.charAt(j);
j++;
if (str.charAt(j) == '.') break;
} while (str.charAt(j) != '.');
if (isWinkel) {
werte2[0][i]=Integer.valueOf(work);
isWinkel = !isWinkel;
}
else {
werte2[1][i]=Integer.valueOf(work);
isWinkel = !isWinkel;
i++;
}
j=0;
}
}
in.close();
} catch (MalformedURLException e) {
} catch (SocketTimeoutException e) {
} catch (IOException e) {
}
}
};
textInfo.setText("Prüfe...");
thread.start();
try {
thread.join(); //Wartet auf Thread-Ende
} catch (InterruptedException e) {
}
//Setzt Text abhängig vom Ausgang
if (pruefen) {
mv.setWerte(werte2);
textInfo.setText("Prüfung abgeschlossen. Bitte nun auf den Knopf Radar generieren drücken.");
b2.setVisibility(View.VISIBLE);
}
else {
textInfo.setText("Prüfung war nicht erfolgreich. Bitte eine gültige IP im Format: http://xxx.xxx.xxx.xxx eingeben und sicherstellen, dass eine Verbindung zur Website hergestellt werden kann.");
}