如何在Android上实现后退按钮操作

时间:2014-11-24 18:43:38

标签: android searchview

我的当前应用程序遇到了大问题。当搜索视图扩展时,似乎不可能通过后退按钮实施某些操作。我试过各种类似onBackPressed()或boolean onKeyDown的方法。没有任何效果。我也尝试了清单上的android:parentActivity,没有结果。

你知道吗?问题是,每次我按下放大镜以启动搜索视图时,后退按钮都不再工作,直到我手动关闭搜索视图。

这是我的代码。

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    //Indica el layout (pantalla) de esta activity, clase.
    setContentView(R.layout.activity_pantalla_principal_administrar);
    searchview  = (SearchView) findViewById(R.id.searchView);
    searchview.setOnClickListener(this);

然后我尝试了这两种方式

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) { //MEJORAR ESTO

        if (keyCode == KeyEvent.KEYCODE_BACK) {

            searchview.onActionViewCollapsed();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public void onBackPressed(){

        if (!this.searchview.isIconified()) {

            searchview.onActionViewCollapsed();
            invalidateOptionsMenu();
        } else {

            super.onBackPressed();
        }
    }

最后这里是xml片段

<SearchView
    android:layout_width="match_parent"
    android:layout_height="63dp"
    android:id="@+id/searchView"
    android:queryHint="Servicio"
    android:iconifiedByDefault="true"
    android:backgroundTint="@color/Negro"
    android:layout_marginRight="0dp"
    android:clickable="true" />

2 个答案:

答案 0 :(得分:0)

奇怪,您的keydown实现看起来像这样?

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
            if (!this.searchview.isIconified()) {
                searchview.onActionViewCollapsed();
                invalidateOptionsMenu();
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

答案 1 :(得分:0)

这是包含searchview的layout.xml。

    &GT;         

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.05"
            android:weightSum="1">

            <ImageView
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:id="@+id/bombillaImage"
                android:src="@drawable/bombilla"
                android:layout_marginTop="0dp" />

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="211dp"
                android:layout_height="wrap_content"
                android:layout_toEndOf="@+id/bombillaImage"
                android:layout_alignParentTop="true"
                android:layout_toLeftOf="@+id/ayudaButton"
                android:layout_toStartOf="@+id/ayudaButton"
                android:layout_above="@+id/passwordList"
                android:id="@+id/linearLayout6"
                android:backgroundTint="@color/Negro"
                android:clickable="true">


                <SearchView
                    android:layout_width="match_parent"
                    android:layout_height="63dp"
                    android:id="@+id/searchView"
                    android:queryHint="Servicio"
                    android:iconifiedByDefault="true"
                    android:backgroundTint="@color/Negro"
                    android:layout_marginRight="0dp"
                    android:clickable="true" />

            </LinearLayout>

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignRight="@+id/scrollView"
                android:layout_alignEnd="@+id/scrollView"
                android:gravity="right">

                <ImageButton
                    android:layout_width="60dp"
                    android:layout_height="60dp"
                    android:id="@+id/ayudaButton"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentEnd="true"
                    android:adjustViewBounds="false"
                    android:clickable="true"
                    android:longClickable="true"
                    android:scaleType="centerInside"
                    android:background="@drawable/ayudabuttonbackground"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="Ayuda."
                    android:id="@+id/textView6"
                    android:textSize="8dp"
                    android:textStyle="italic"
                    android:textColor="#ff000000"
                    android:layout_below="@+id/ayudaButton"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentEnd="true"
                    android:layout_marginRight="17dp" />
            </LinearLayout>

        </LinearLayout>


        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="340dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1.15">

            <ListView
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:id="@+id/passwordList"
                android:scrollbars="vertical"
                android:scrollbarStyle="outsideOverlay"
                android:visibility="visible"
                tools:listitem="@android:layout/simple_list_item_1"
                android:layout_below="@+id/textView6"
                android:layout_above="@+id/salirListaButton"
                android:layout_gravity="center_vertical" />
        </LinearLayout>

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="43dp"
            android:layout_marginBottom="5dp">

            <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="SALIR"

                android:id="@+id/salirListaButton"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_gravity="right" />
        </LinearLayout>

    </LinearLayout>
</ScrollView>