簡體   English   中英

Android TextView.setText有時僅在Runnable內部工作

[英]Android TextView.setText working only sometimes inside Runnable

我有一個postDelayed Runnable,它從3倒數執行一些代碼x次。 我正在通過setText()向用戶顯示文本。 setText()函數在if,else if,else的某些區域中起作用,但在其他區域中不起作用。

    final Runnable r1 = new Runnable() {
        @Override
        public void run() {
            if ((--count != 0) && (gestureCounter != selectedItems.size())) {
                mHandler.postDelayed(this, 1000);
                liveView.setText("Do " + selectedItems.get(gestureCounter) + " in " + String.valueOf(count));//works
            }
            else if(gestureCounter != selectedItems.size()){
                count=4;//3 seconds + 1
                liveView.setText("Hold " + selectedItems.get(gestureCounter));//NOT WORKING
                mHandler.post(this);
                fcalc.setTrain(true);
                while(fcalc.getTrain()){
                    //wait till trainig is done
                }
                gestureCounter++;
            }
            else{
                liveView.setText("");//works
                fcalc.Train();
                fcalc.setClassify(true);
            }
        }
    };
    mHandler.post(r1);

請看一下我的評論,看看哪些setText()函數起作用或不起作用。 else if中的一個是唯一不起作用的。

有任何想法嗎?

謝謝您的幫助!

這是因為您正在調用mHandler.post(this); 這將立即再次調用可運行的處理程序,並且您還將增加gestureCounter的值,因此下一次將進入此循環,並將根據條件進入第一個循環或第三個循環

嘗試在該循環中添加延遲並檢查

編輯:

由於您的while循環持續運行,UI並未更新,只需注釋並按以下條件運行代碼即可正常工作

像這樣

                    else if(gestureCounter != selectedItems.size()){
                    liveView.setText("Hold " +
                            selectedItems.get(gestureCounter));//NOT WORKING

                    mHandler.postDelayed(this, 1000); // delay added 

                    if(fcalc.getTrain()) {
                        return;
                    }
                    count=4;//3 seconds + 1

//                    fcalc.setTrain(true);
//                    while(fcalc.getTrain()){
//                        //wait till trainig is done
//                    }
                    gestureCounter++;
                }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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