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线程是一样的。