Android: cómo deshabilitar el botón de búsqueda, cómo implementar onSearchRequested ()?

Revisado lo siguiente:¿Cómo hacer clic en el botón de búsqueda del teléfono no hacer nada?

Pero no funciona para mí. ¿Alguien tiene alguna otra sugerencia? Gracias. Siguiendo la sugerencia de Phil actualizando el código de acuerdo a su respuesta. Muestra el errorhttp://www.youtube.com/watch?v=9lekcH1JAf0&feature=youtu.be

Así que he hecho un proyecto de muestra. He probado esto en dos teléfonos diferentes, Android versión 2.3.5 y 4.1, también probé esto en el emulador versión 2.2. Después de hacer clic en el botón Mostrar cuadro de diálogo, se muestra el cuadro de diálogo de progreso bien y debería continuar haciéndolo. Pero al hacer clic en el botón Buscar en los teléfonos y el emulador hace que desaparezca el diálogo de progreso. Aquí está la clase, y el manifiesto sigue.

El comportamiento actual es que cuando se hace clic en el botón de búsqueda, el diálogo de progreso desaparece. El comportamiento esperado o necesario es deshabilitar el botón de búsqueda, o de manera similar cuando se muestra el cuadro de diálogo y se hace clic en el botón de búsqueda, este clic no hace que el cuadro de diálogo desaparezca.

    package com.example.test6;

import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    Button showDialogButton;
    Context context;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        showDialogButton = (Button) findViewById(R.id.showDialogButton);
        showDialogButton.setOnClickListener(showDialog);
        context = this;
        startSearch(null, false, null, false);
    }

    private OnClickListener showDialog = new OnClickListener() {

        @Override
        public void onClick(View v) {
            ProgressDialog progressDialog = new ProgressDialog(context);
            progressDialog.show();
        }
    };

    @Override
    public boolean onSearchRequested() {
       Log.d("onSearchRequested", "search key pressed");
       return false;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test6"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="1"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="Test6" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
        </activity>
    </application>

</manifest>

Mi xml de búsqueda se encuentra en: res / xml / searchable.xml de acuerdo con la referencia proporcionada. Así es como se ve mi searchable.xml:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:searchSuggestAuthority="dictionary"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:includeInGlobalSearch="true">
</searchable>

Respuestas a la pregunta(4)

Su respuesta a la pregunta