我的应用程序上有扫描功能。我有一个用barcodescanner(外部键盘)扫描的输入字段。扫描成功后,焦点应返回此输入字段。
在片段中:
EditText handscann=rootView.findViewById(R.id.handscannerinput);
handscann.requestFocus();
在xml中:
<EditText
android:id="@+id/handscannerinput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:imeOptions="actionSearch"
android:inputType="numberDecimal"
android:singleLine="true"
android:text="@{vmScann.handscannerArticlenumber}"
android:theme="@style/EditTextTheme">
<requestFocus />
</EditText>
我的问题是,焦点不是设置到此输入字段,而是设置在同一视图上的切换器。
当我触摸切换台时,焦点转到输入字段。切换台还有另一个ID:
<Switch
android:id="@+id/switch2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:checked="@={vmScann.myArticleSwitchActivated}"
android:theme="@style/SwitchThemeGreen"
android:paddingRight="15dp" />
有没有人知道为什么会这样?
编辑:我在requestfocus之后检查哪个视图具有焦点
View view=rootView.findFocus();
这说重点是手工扫描输入......
之后我用hasfocus()检查但是这是假的
if(handscann.hasFocus()){
int i=0; //for the breakpoint
}
在qazxsw poi或qazxsw poi函数中初始化并投射qazxsw poi片段添加handscann
后成功扫描功能
即在回调函数内部的扫描调用onViewCreated()
的onFinsih
onCreateView()