Можете ли вы поймать и обработать нажатие клавиши поиска в диалоговом окне с предупреждением? - PullRequest
0 голосов
/ 07 октября 2011

Я хочу использовать 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();

1 Ответ

0 голосов
/ 07 октября 2011

Вам просто нужно прикрепить OnKeyListener к диалогу, как это:

mAd.setOnKeyListener(new DialogInterface.OnKeyListener() {
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
            if (keyCode == KEYCODE_SEARCH)  {
                        // Handle search key
                        return true;
            }
            return false;
        }
    })
.create();
...