SetFocus无法正常工作

时间:2017-12-20 08:17:44

标签: android android-studio focus

我的应用上有扫描功能。 我有一个用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" />

有没有人知道为什么会这样?

编辑: 我在请求焦点后检查哪个视图具有焦点

View view=rootView.findFocus(); 

这说重点是手工扫描输入...

之后我用hasfocus()检查但是这是假的

if(handscann.hasFocus()){
    int i=0; //for the breakpoint
}

1 个答案:

答案 0 :(得分:0)

在Fragment的handscannonViewCreated()函数中初始化并投射onCreateView() 在Succesfull Scan功能

之后添加requestFocus()

即回调函数内的扫描调用requestFocus()的onFinsih

your callBackFunction(){ 

    //Do Opertions
    yourSwitch.clearFocus();
    handscann.setText(text); //If any
    handscann.requestFocus();
}
@Override
public void onResume() {
    super.onResume();
    handscann.requestFocus();
}