我有onKeyDown方法的代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
{
int index = seekbar.getProgress();
seekbar.setProgress(index + 1);
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
{
int index = seekbar.getProgress();
seekbar.setProgress(index - 1);
return true;
}
return super.onKeyDown(keyCode, event);
}
问题是我想在AsyncTask
postExecute
上执行此操作,我认为在runOnUiThread中,但我不确定。
有关这方面的任何想法或建议吗?
谢谢!
编辑:
我在一个对话框中有一个seekBar,它在AsynTask中的postExecute中创建和显示,我需要像这样更新seekbar thumb位置:seekbar thumb position change when user press device volume keys
答案 0 :(得分:0)
postExecute
不需要runOnUiThread
您可以更新postExecute
了解更多信息,请阅读this.
答案 1 :(得分:0)
取一个布尔变量
boolean myboolean=false;
然后在postExecute()
并将您的onKeyDown()
方法修改为
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(myboolean)
{
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
{
int index = seekbar.getProgress();
seekbar.setProgress(index + 1);
return true;
}
else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
{
int index = seekbar.getProgress();
seekbar.setProgress(index - 1);
return true;
}
}
return super.onKeyDown(keyCode, event);
}
答案 2 :(得分:0)
class ABC {
Context mContext;
ABC(Context c)
{
mContext=c;
}
public void launchIntent() {
CurrentClass.this.runOnUiThread(new Runnable() {
@Override
public void run() {
call your method stub here
}
}
});
}
}