Karo heraus die folgenden: How to have clicking the phone's search button do nothing?Android - Wie Search-Taste zu deaktivieren, wie OnSearchRequested() implementieren?
Aber es für mich nicht funktioniert. Hat jemand andere Vorschläge? Vielen Dank. Nach Phils Vorschlag, den Code entsprechend seiner Antwort zu aktualisieren. Zeigt den Fehler http://www.youtube.com/watch?v=9lekcH1JAf0&feature=youtu.be
Also habe ich ein Beispielprojekt gemacht. Ich habe das auf zwei verschiedenen Handys getestet, Android Version 2.3.5 und 4.1, ich habe es auch auf Emulator Version 2.2 getestet. Nachdem ich auf den Button show dialog geklickt habe, zeigt es den Fortschrittsdialog an und sollte es auch weiterhin tun. Durch Klicken auf die Schaltfläche Suchen auf den Telefonen und im Emulator wird der Fortschrittsdialog jedoch ausgeblendet. Hier ist die Klasse, und Manifest folgt.
Das aktuelle Verhalten ist, dass beim Klicken auf die Suchschaltfläche der Fortschrittsdialog verschwindet. Das erwartete oder erforderliche Verhalten besteht darin, die Suchschaltfläche zu deaktivieren, oder ähnlich, wenn das Dialogfeld angezeigt wird und die Suchschaltfläche angeklickt wird. Durch diesen Klick wird der Dialog nicht ausgeblendet.
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>
Meine durchsuchbare XML ist bei: res/xml/searchable.xml entsprechend der bereitgestellten Referenz. Dies ist, wie mein searchable.xml wie folgt aussieht:
<?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>
Zeigen Sie uns Ihren Code, das ist Vorschlag # 1. – dbDev
Wenn Sie "Es funktioniert nicht" sagen, meinen Sie, dass Sie die Protokollierung nicht sehen oder das Telefon die Suche noch startet? – DeeV
Richtig, ich sehe keine Protokollierung, ohne onSearchRequested() in my onCreate() zu setzen. Und die Suche wird nicht gestartet, aber meine Dialoge verschwinden. –