0
我正在播放音樂,並且我有next
和previous
按鈕。我不希望用戶按下這些按鈕,所以我試圖按鈕延遲四分之一秒。當我調用某種方法禁用一個按鈕一秒鐘時發生致命異常
我的下一個按鈕的代碼(以前的按鈕相同):
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View button) {
try {
taskMaster(2);
String newPath = nextPath();
instanceSongPlayer isp = new instanceSongPlayer(newTitle(1), album, titles, titlePlace, thisInstance, context, newPath, _activity);
isp.taskMaster(1);
isp.countdown();
} catch (Exception e) {
e.printStackTrace();
}
}
});
instanceSongPlayer
是類的名稱
taskMaster(1)
PREPS的MediaPlayer
並開始歌曲
的代碼countdown()
是:
static Timer bd;
private static void countdown(){
next.setEnabled(false);
previous.setEnabled(false);
bd = new Timer();
TimerTask task = new TimerTask(){
@Override
public void run() {
next.setEnabled(true);
previous.setEnabled(true);
}
};
bd.schedule(task, 250);
}
(我把它在希望這會奇蹟般地解決了我所有的問題靜態)
這是我得到的錯誤:
01-24 13:32:00.762: E/AndroidRuntime(11743): FATAL EXCEPTION: Timer-2
01-24 13:32:00.762: E/AndroidRuntime(11743): Process: com.mdc.etuna, PID: 11743
01-24 13:32:00.762: E/AndroidRuntime(11743): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6094)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:857)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4320)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.view.View.invalidate(View.java:10878)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.view.View.invalidateDrawable(View.java:14969)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.widget.ImageView.invalidateDrawable(ImageView.java:203)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.graphics.drawable.DrawableContainer.invalidateDrawable(DrawableContainer.java:286)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.graphics.drawable.Drawable.invalidateSelf(Drawable.java:344)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.graphics.drawable.Drawable.setVisible(Drawable.java:575)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.graphics.drawable.DrawableContainer.selectDrawable(DrawableContainer.java:345)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.graphics.drawable.StateListDrawable.onStateChange(StateListDrawable.java:106)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.graphics.drawable.Drawable.setState(Drawable.java:491)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.view.View.drawableStateChanged(View.java:15120)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.widget.ImageView.drawableStateChanged(ImageView.java:999)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.view.View.refreshDrawableState(View.java:15134)
01-24 13:32:00.762: E/AndroidRuntime(11743): at android.view.View.setEnabled(View.java:6067)
01-24 13:32:00.762: E/AndroidRuntime(11743): at com.mdc.etuna.instanceSongPlayer$1.run(instanceSongPlayer.java:101)
01-24 13:32:00.762: E/AndroidRuntime(11743): at java.util.Timer$TimerImpl.run(Timer.java:284)
誰能給我任何的想法亡羊補牢?由於我從instanceSongPlayer
的新實例呼叫countDown()
,因此我不知道可能導致問題的原因。
謝謝,這是一個簡單的修復! – user2726232