4

完成编辑后,我在 android 对话框中有一个 EditText(searcField),然后关闭对话框。

然后我转到其他EditText,焦点仍然在searchField。

任何想法?

谢谢

编辑:这里有太多要发布的内容,希望这有助于理解我的问题。

客户对话视图

           <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:paddingTop="5dip"
                android:orientation="horizontal" >

                <EditText 
                     android:id="@+id/search_field"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:gravity="left"
                     android:inputType="textNoSuggestions|textVisiblePassword"
                     android:layout_weight="0.70"
                     android:hint="type item name to search"/>


           </LinearLayout>


          <ListView    
             android:id="@+id/itemList"    
             android:layout_width="fill_parent"    
             android:layout_height="wrap_content"
             android:divider="#00000000"
             android:descendantFocusability="beforeDescendants"    
             android:scrollbars="none"/>

      </LinearLayout>

Java 代码

    View searchView = getActivity().getLayoutInflater().inflate(R.layout.search, null, false);
    EditText searchField = (EditText)productEditView.findViewById(R.id.search_field);
    searchField.addTextChangedListener(this);
    ...

    public void afterTextChanged(Editable text) {
        if (searchField.hasFocus()) {
            Log.i("MyApp", "searchField is still focused");
            return;
        }
        if (otherField.hasFocus()){
           Log.i("MyApp", "other field");
           return;
        }
    }
4

3 回答 3

3

如果我希望能够清除 EditText 的 clearFocus() 或打开 Activity/Fragment 而不需要android:focusable="true"第一个android:focusableInTouchMode="true"EditText 被自动聚焦。

于 2013-07-17T22:26:47.297 回答
2

我不知道它是否可以通过 xml 来实现,但是当您的对话框被关闭时,您可以通过执行以下操作以编程方式执行此操作:

mView.setFocusableInTouchMode(true);
mView.requestFocus();

要知道您的对话框何时被关闭,只需覆盖 onDismiss() 回调方法。

于 2013-07-18T05:01:13.803 回答
1

您必须在编辑代码事件后添加以下代码:

seachview.clearfocus();
edittext.requestfocus();
于 2013-07-18T05:52:48.223 回答