0
我想更新活動中的TextView,更新視圖的方法是在主要活動(正常情況),但調用此方法是從另一個類(和另一個類線)。android視圖沒有從另一個類和另一個線程更新
這是更新視圖的方法,該方法是在主要活性, (請注意,所有的日誌被正確地打印,並以正確的順序):
public void getDataFromFiles() {
String new_text = JsonReader.readTextData(dataName,activityName, this);
Log.i("Loading", "loaded text " + new_text );
if (new_text != null) {
TextView introText = (TextView) findViewById(R.id.loading_introTxt);
introText.setText(new_text);
}
}
這是它是從所謂的LoadingThread另一個類調用,它具有一定的參考(loadingActivity):
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i("LoadingThread", "Will update loading screen");
loadingActivity.getDataFromFiles();
}
});
還要注意如何LoadingThread類是從主要活動稱爲
LoadingThread loadingThread = LoadingThread.getInstance(this);
Thread thread = new Thread(loadingThread);
loadingThread.setActivity(this);
thread.start();
所以這樣的流程: 主要活動開始,然後後調用一次的主要活動這是爲了更新視圖的方法的LoadingThread,但這種情況不會發生,但在關閉應用程序時和再次打開它,那麼更新就在那裏。
您正在UI線程上運行更新,所以這不是問題。嘗試添加introText.invalidate();在getDataFromFiles()中設置文本後。 – Juan
您可以嘗試在活動中保留loading_introTxt的引用並查看它是否有幫助? –
@juan不,它不工作,不幸的 – yoyo