【问题标题】:Android: How I call in runOnUiThread method to onKeyDown?Android:我如何在 runOnUiThread 方法中调用 onKeyDown?
【发布时间】:2012-07-12 10:37:35
【问题描述】:

我有这个 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 拇指位置:seekbar thumb position change when user press device volume keys

【问题讨论】:

  • 为什么要这样做?
  • onKeyDown() 是 Activity 的方法而不是 AsyncTask 的方法,你不能直接调用这个方法。
  • 因为我在对话框中有一个 seekBar,它是在 AsynTask 的 postExecute 中创建并显示的,我需要像这样更新搜索栏拇指位置:stackoverflow.com/questions/3215791/…
  • 全局做一个Seekbar引用,然后就可以正常做,不需要把这个方法放在PostExecute()上。

标签: android android-asynctask


【解决方案1】:

postExecute不需要runOnUiThread你可以更新postExecute中的UI元素

更多信息请阅读this.

【讨论】:

    【解决方案2】:
     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
                    } 
                }
               });
            }
         }
    

    【讨论】:

      【解决方案3】:

      取一个布尔变量

      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); 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-21
        • 1970-01-01
        • 1970-01-01
        • 2014-08-13
        相关资源
        最近更新 更多