[英]TextView setText() not always working
我在使用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.");
}
這很尷尬,無論如何都有初始化的解決方法,您可以在XML布局中執行此操作
<TextView
android:id="@+id/textInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check" />
您可以發布布局文件的內容嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.