Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当我调用某个禁用按钮达四分之一秒的方法时,出现致命异常_Android - Fatal编程技术网

Android 当我调用某个禁用按钮达四分之一秒的方法时,出现致命异常

Android 当我调用某个禁用按钮达四分之一秒的方法时,出现致命异常,android,Android,我正在播放音乐,我有next和previous按钮。我不希望用户将这些按钮混搭在一起,所以我尝试将这些按钮延迟四分之一秒 “我的下一个”按钮的代码(上一个按钮相同): instanceSongPlayer是类的名称 taskMaster(1)准备MediaPlayer并开始播放歌曲 倒计时()的代码是: static Timer bd; private static void countdown(){ next.setEnabled(false); previous.setEn

我正在播放音乐,我有
next
previous
按钮。我不希望用户将这些按钮混搭在一起,所以我尝试将这些按钮延迟四分之一秒

“我的下一个”按钮的代码(上一个按钮相同):

instanceSongPlayer
是类的名称

taskMaster(1)
准备
MediaPlayer
并开始播放歌曲

倒计时()的代码是:

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()
,我不知道是什么原因导致了问题

您的
TimerTask
正在非UI线程的线程中运行。无法从其他线程访问UI元素


在任务中,使用使UI线程启用按钮。

您的
TimerTask
正在非UI线程的线程中运行。无法从其他线程访问UI元素


在任务中,使用使UI线程启用按钮。

您的
TimerTask
正在非UI线程的线程中运行。无法从其他线程访问UI元素


在任务中,使用使UI线程启用按钮。

您的
TimerTask
正在非UI线程的线程中运行。无法从其他线程访问UI元素


在您的任务中,使用a让您的UI线程启用按钮。

谢谢,这是一个简单的解决方案!谢谢,这是一个简单的解决办法!谢谢,这是一个简单的解决办法!谢谢,这是一个简单的解决办法!
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)