Android:我如何在runOnUiThread方法中调用onKeyDown?

时间:2012-07-12 10:37:36

标签: android android-asynctask

我有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

3 个答案:

答案 0 :(得分:0)

postExecute不需要runOnUiThread您可以更新postExecute

中的UI元素

了解更多信息,请阅读this.

答案 1 :(得分:0)

取一个布尔变量

boolean myboolean=false;

然后在postExecute()

中将此变量设为“true”

并将您的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
                } 
            }
           });
        }
     }