使用setText()
时遇到问题,我感到绝望。
如果单击b3,我将声明一个线程,然后启动它。线程中的代码并不重要,它将从网站上读取一些数据并将其写入有关操作结果的数组中。
一切正常。但是在启动线程之前,我想将文本设置为“ Check ...”。但这是行不通的。我几乎在所有地方都写了setText行,从这里开始使用了几种方法(例如Handler
),但是没有一个起作用,并且文本“Prüfe...”不会显示在我的textview中。
请帮助我!
//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.");
}
答案 0 :(得分:0)
这很尴尬,无论如何都有初始化的解决方法,您可以在XML布局中完成
<TextView
android:id="@+id/textInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check" />
您可以发布布局文件的内容吗?