Я хочу использовать Androids AlertDialog
Builder, но также ловить, когда пользователь нажимает клавишу поиска.Я могу сделать это в пользовательском диалоге, но не могу понять, как это сделать в состоянии тревоги.Вот мой код с закомментированным разделом Custom (у меня нет макета для custom):
public static boolean show(final Activity activity) {
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
if (!preferences.getBoolean(ACCUWX.Preferences.PREFERENCE_EULA_ACCEPTED, false)) {
final TextView message = new TextView(activity);
final SpannableString s =
new SpannableString(activity.getText(R.string.eula_terms_info));
Linkify.addLinks(s, Linkify.WEB_URLS);
message.setPadding(10, 10, 10, 10);
message.setText(s);
message.setTextColor(Color.GRAY);
message.setMovementMethod(LinkMovementMethod.getInstance());
mAd = new AlertDialog.Builder(activity);
mAd.setTitle(R.string.terms_conditions);
mAd.setCancelable(false);
mAd.setPositiveButton(R.string.agree, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
accept(preferences);
if (activity instanceof OnEulaAgreedTo) {
((OnEulaAgreedTo) activity).onEulaAgreedTo();
}
}
})
.setNegativeButton(R.string.disagree, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
reject(activity);
}
})
.setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
refuse(activity);
}
})
.setView(message)
.create();
mAd.show();
return false;
}
return true;
}
Вот диалог:
Dialog dialog = new Dialog(activity) {
@Override
public boolean onKeyDown(int keyCode,
KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SEARCH)
{
System.out.println("----- ignore search pressed");
return true;
}
return false;
}
};
dialog.setContentView(R.layout.terms_and_conditions_dialog);
dialog.setTitle(R.string.terms_conditions);
dialog.setCancelable(false);
dialog.show();