Hello,

I have exactly the same issue.
Did anyone find a solution?

Thanks in advance!

Rafael

On 3 Feb., 12:55, kordzik <[email protected]> wrote:
> Hi all,
>
> In my application I want to display a list of stuff and provide the
> user with the ability to filter the list by using the soft keyboard.
> To that end I added a popup with a button that should trigger (hide/
> show) the soft keyboard for filtering. I don't want to have a visible
> edit text control, cause it would take up unnecessary space on the
> screen. Rather than that, I would like to display a toast showing the
> filter query as the user types, much as the
> 'android:textFilterEnabled' attribute for ListView does. To my
> understanding there is no obvious way of doing this with available
> Android components. So I tried the following approach (this is only
> the part for toggling soft keyboard):
>
> 1) creating a layout containing invisible edit text and the list view:
> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/
> android"
>               android:id="@+id/list_container"
>               style="@style/main" >
>     <View   class="com.blahblah.view.InsertTextView" <-- this is
> basically EditView
>             android:id="@+id/filterbox"
>             android:layout_width="0dp"
>             android:layout_height="0dp"
>             android:visibility="invisible"
>             android:inputType="textFilter"
>             android:imeOptions="flagNoExtractUi|flagNoEnterAction|
> flagNoAccessoryAction"
>             android:focusable="true"
>             android:focusableInTouchMode="true"
>             />
>
>     <ListView android:id="@+id/mylist"
>               android:drawSelectorOnTop="false"
>               android:layout_height="0px"
>               android:layout_width="fill_parent"
>               android:layout_weight="5"
>               />
> </LinearLayout>
>
> - adding button as a popup and invoking InputMethodManager on click to
> toggle the soft input (called in onCreate):
>
>     private void initButton() {
>         Button buttonView = (Button)
> getLayoutInflater().inflate(R.layout.keyboard_button, null);
>         buttonView.setOnClickListener(new View.OnClickListener() {
>             public void onClick(View v) {
>                 final View target = findViewById(R.id.filterbox);
>                 InputMethodManager imm = (InputMethodManager)
> getSystemService(Context.INPUT_METHOD_SERVICE);
>                 // this does not work...
>                 //
> imm.toggleSoftInputFromWindow(target.getWindowToken(),
> InputMethodManager.SHOW_FORCED, 0);
>                 // ... so need to track this in an instance variable -
> which sucks
>                 if (imeShowing) {
>
> imm.hideSoftInputFromWindow(target.getWindowToken(), 0);
>                     imeShowing = false;
>                 } else {
>                     // check that the filterbox got focus
>
> Preconditions.checkState(target.requestFocusFromTouch());
>                     Preconditions.checkState(target.hasWindowFocus());
>                     Preconditions.checkState(target.hasFocus());
>                     imm.showSoftInput(target, 0);
>                     imeShowing = true;
>                 }
>             }
>         });
>         buttonPopup = new PopupWindow(buttonView);
>         // ... code to display the button as a popup
>     }
>
> As mentioned in the code sample, the 'obvious' approach (calling
> toggleSoftInput) does not work, so I had to revert to this ugly if-
> else. This is however, a secondary problem. The primary problem is
> that when I run this in the emulator, the soft keyboard is displayed
> correctly, but as soon as I start typing in it, an intent to the
> google search activity is raised! And the typed characters appear in
> the Google search box displayed as a result. What is even more weird,
> this only happens the first time I type after deploying and running
> the app. I.e. if I go back to my app from the Google search box,
> everything works as expected (no redirects to the search box again).
> Before showing the display I make sure that the invisible edittext
> gets focus, so it _should_ be the target of the soft keyboard, right??
>
> Does anyone have any idea what is happening here?
>
> Cheers,
> Dariusz

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to