簡體   English   中英

TextView setText()並非始終有效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM