Как установить действие для кнопки в этом пользовательском диалоговом окне?

Я создаю собственный диалог, например:

public class CustomDialog extends Dialog {
     public CustomDialog(String s) {
    super(s, new String[] {"View","Cancel"}, new int [] {1,2}, 1,         Bitmap.getPredefinedBitmap(Bitmap.EXCLAMATION), Manager.FOCUSABLE);

    }

Как установить действие для кнопок «Просмотр» и «Отмена»? Я искал и не нашел, что я должен сделать. Пожалуйста помогите !


person Cong Binh    schedule 13.09.2011    source источник


Ответы (2)


Проверьте этот код.. это может вам помочь..

import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.HorizontalFieldManager;

public class CustomAlertDialog extends Dialog {


    public CustomAlertDialog() {
        super("Your Custom message for Dialoug" , null, null, Dialog.DISCARD, null, Dialog.VERTICAL_SCROLL);

        HorizontalFieldManager hfm = new HorizontalFieldManager();

        ButtonField view = null;

        view = new ButtonField("view") {
            protected boolean navigationClick(int status, int time) {
            // do what ever you want
            return true;
            }

            protected boolean keyChar(char key, int status, int time) {
            // do what ever you want
            return true;
            }
        };

        ButtonField cancel = null;
        cancel = new ButtonField("Cancel") {
            protected boolean navigationClick(int status, int time) {
            // do what ever you want
            return true;
            }

            protected boolean keyChar(char key, int status, int time) {
            // do what ever you want
            return true;
            }
        };
    hfm.add(view);
    hfm.add(cancel);

    this.add(hfm);
    }
}
person Nilanchal    schedule 13.09.2011
comment
Большое спасибо, этот код очень полезен. Но я использую действие close() для кнопки «Отмена», мне нужно щелкнуть 2 раза, чтобы закрыть диалоговое окно. Я работал над Симулятором. Можете ли вы объяснить, почему? - person Cong Binh; 14.09.2011
comment
О, это проблема симулятора, я сменил симулятор, и он работает хорошо. :) - person Cong Binh; 14.09.2011

Прикрепите DialogClosedListener к CustomDialog с помощью Dialog.setDialogClosedListener(). Когда кто-то нажмет любую из кнопок, будет вызван метод DialogClosedListener.dialogClosed(), и индекс кнопки будет передан как параметр choice.

person jprofitt    schedule 13.09.2011
comment
Это работает, если вы предоставляете массив вариантов выбора Object, но если вы используете настраиваемые поля кнопок, возвращаемое значение choice всегда равно -1. - person azdev; 08.12.2011