AlertDialog получает возвращаемое значение без обработчика - PullRequest
0 голосов
/ 24 августа 2010

Я хотел бы показать несколько алертов, так что пользователь должен ответить на некоторые вопросы (немного похоже на мастера).

Можно ли заставить alertDialog ждать, пока пользователь не выберет что-то изатем возвращаем выбранное значение?

    HashMap<Integer, Question> questions = DataConnector.getCallQuestions(position);

    int nextQuestion = position;

    while(nextQuestion != 0){
        Question question = questions.get(nextQuestion);

        CharSequence[] items = (String[])question.getAnswers();

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(question.getQuestion());
        builder.setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {

            }
        });
        AlertDialog alert = builder.create();

        //I would like to do something like this:
        nextQuestion = alert.getClickedItem();
    }

РЕДАКТИРОВАТЬ .Ответ Крису:

Выполнение программы должно ждать, пока пользователь не выберет один из параметров в alertDialog

Возможно ли это?

Как это:

    private int answer = 0;

    ....
    ...methode(){

    //show dialog
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(question.getQuestion());
    builder.setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            CallHandleMenu.this.answer = item; //setting answer
        }
    });
    builder.create().show();

    //Here I need to know the answer (the answer should not be 0 here)

Ответы [ 2 ]

0 голосов
/ 24 августа 2010

Я исправил это (псевдокод), потому что мой код грязный: p

    activity{
        onCreate{
            makeNextQuestion(1)
        }

        public void nextQuestion(int questionId){
            //add string and answering buttons to layout
            btn.onClickList(){
                onClick(View btn){
                    activity.this.nextQuestion(btn.getId());
                }
            }
        }
    }
0 голосов
/ 24 августа 2010

Если вы хотите, чтобы появился ряд полей AlertDialog, то лучше всего было бы установить некоторых слушателей внутри самих диалогов.

.setPositiveButton("My Button Name", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           //do stuff like set some variables, maybe display another dialog
                       }
               }) 

Обратите внимание, что я использую положительную кнопку по умолчанию для диалогового окна предупреждения, вам может потребоваться изменить это в зависимости от того, что пользователь нажимает.

Если вы собираетесь делать обратные вызовы в ваш класс Activity из AlertDialog onClickListener, вы можете использовать MyActivityClassName.this.myMethodOrVariableHere для этого.

Надеюсь, что это поможет, оставьте мне комментарий, если вам нужны дополнительные разъяснения.

...