Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 有时为什么requestFocus()不';不行?_Android_Android Edittext_Runnable - Fatal编程技术网

Android 有时为什么requestFocus()不';不行?

Android 有时为什么requestFocus()不';不行?,android,android-edittext,runnable,Android,Android Edittext,Runnable,我们调用了requestFocus来自动关注EditText,但有时它工作或不工作。因此,我们添加了runnable to UI线程来关注它 view.post(new Runnable() { @Override public void run() { view.requestFocus(); InputMethodManager imm = (InputMethodManager) getContext().getSystemServi

我们调用了
requestFocus
来自动关注
EditText
,但有时它工作或不工作。因此,我们添加了runnable to UI线程来关注它

view.post(new Runnable() {
      @Override
      public void run() {
        view.requestFocus();
        InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);
      }
    });

最后,我们知道它运行良好,但我真的很好奇的原因。为什么?有人知道吗?

现在调用requestFocus()还为时过早。在通货膨胀时期,尝试调用以下内容:

button.post(new Runnable(){
     @Override 
     public void run(){
        inflatedView.requestFocus();
     } });
它将调度对主队列的调用(因此将在 在主线程在此完成其工作之后


主线程和UI线程是相同的东西,即它们是相同的实体。因此,您的假设是错误的,可能还有其他问题(特别是关注父元素和子元素之间的所有权)。我建议您查看一下视图层次结构,确保不是其他视图占用焦点。@OlegBogdanov主线程并不总是UI线程。阅读docs.cc@Dibzmania主线程并不总是UIthread@Enzokie-请阅读Android官方文档-启动应用程序时,系统会为应用程序创建一个名为“main”的执行线程这个线程非常重要,因为它负责将事件分派到适当的用户界面小部件,包括绘图事件。它也是应用程序与Android UI工具包中的组件(来自Android.widget和Android.view包的组件)交互的线程。因此,主线程有时也被称为UI线程。@Dibzmania如果应用程序没有UI,是否一定要有UI线程?例如,一个只有服务的应用程序是否在UI线程上运行服务?在您的参考资料中,它这样说,主线程有时也被称为UI线程,但您所说的是
主线程和UI线程是一样的。