2 回答

TA貢獻1805條經驗 獲得超10個贊
我找到了解決辦法。問題是我試圖讓處理程序中的線程休眠。JVM 認為應該暫停主線程,而不是“t”線程。我將 Thread.sleep() 方法移至 run() 以及 for 循環。我只在處理程序中留下 switch() 來更改 UI?,F在就可以了。
final Handler h = new Handler() {
@Override
public void handleMessage(@NonNull Message msg) {
Translations x = dict.get(i-1);
switch (j) {
case 1: {
Log.d(TAG, "First word translated");
englishTrans1.setText(x.getEnglishWord());
polishTrans1.setText(x.getPolishWord());
break;
}
case 2: {
Log.d(TAG, "Second word translated");
englishTrans2.setText(x.getEnglishWord());
polishTrans2.setText(x.getPolishWord());
break;
}
case 3: {
Log.d(TAG, "Third word translated");
englishTrans3.setText(x.getEnglishWord());
polishTrans3.setText(x.getPolishWord());
break;
}
}
}
};
Runnable r = new Runnable() {
@Override
public void run() {
for(i = 0;i<dict.size();i++) {
try {
Thread.sleep(2000);
}catch (InterruptedException e){
}
if (j < 3) {
j++;
} else {
j = 1;
}
h.sendEmptyMessage(0);
}
}
};
Thread t = new Thread(r);
t.start();
}
}

TA貢獻1866條經驗 獲得超5個贊
為什么要循環,代碼片段正在執行的“字幕”鏈接到視頻。如果用戶擦洗影片并快進或快退會怎樣?大多數字幕設置都會在屏幕上顯示與影片時間碼相關聯的句子,因此您可以在播放視頻上的時間碼發生變化時觸發字幕,并傳入時間碼,這樣它將獲取視頻該部分的句子并將其顯示在屏幕上。
添加回答
舉報