Android-приложение, использующее AlertDialog, чтобы предложить пользователю ввести номер страницы, и приложение затем переходит на эту страницу - PullRequest
0 голосов
/ 01 июля 2011

поэтому я создаю это приложение для Android, которое читает файлы. Одна функция, которую я хочу, - позволить пользователю вводить номер страницы, а затем приложение открывать этот конкретный номер страницы. Поскольку я новичок в Android, я просмотрел некоторую информацию в Интернете и нашел некоторую информацию, касающуюся Edittext и AlertDialog. В моем коде, если пользователь открывает меню и нажимает кнопку «Перейти», то открывается AlertDialog с просьбой ввести номер страницы. Я конвертирую эту строку в int, а затем приложение ДОЛЖНО перейти на эту страницу. Однако по какой-то странной причине он переходит на указанную страницу, только если пользователь снова нажимает GO TO из меню. Я не понимаю, почему пользователь должен снова нажать GO TO, чтобы выполнить указанное действие.

        AlertDialog.Builder alert = new AlertDialog.Builder(this);

        alert.setTitle("Go to page number..."); 
        alert.setMessage("Enter page number:"); 

        // Set an EditText view to get user input 
        final EditText input = new EditText(this);
        input.setInputType(InputType.TYPE_CLASS_NUMBER);
        alert.setView(input);

        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            try {
                num = Integer.parseInt(input.getText().toString());
            } catch(NumberFormatException nfe) {
               System.out.println("Could not parse " + nfe);
            } 

          // Do something with value!
        }
        });

        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int whichButton) {
            // Canceled.
          }
        });
        alert.show();
        c = -1;

Для этого кода я установил блок try / catch для запуска функции. В основном, когда вы нажимаете GO TO из меню, переменная c становится равной -1, тогда у меня есть оператор if, который выполняет переход к N-й странице, только если c = -1.

Я просто не понимаю, почему c не установлен в -1 сразу после открытия AlertDialog и ввода пользователем номера. Почему он должен быть установлен в -1 после того, как пользователь нажимает GO TO еще раз. Спасибо!

1 Ответ

1 голос
/ 01 мая 2012

Что бы я сделал в обработчике onClick для положительной кнопки (Ok), после того как num установлен, отправьте это число методу, который переходит на n-ую страницу.Вот как то так:

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        try {
            num = Integer.parseInt(input.getText().toString());
        } catch(NumberFormatException nfe) {
           System.out.println("Could not parse " + nfe);
        } 

        jumpToPage(num);
    }
    });

    public void jumpToPage(num) {
       // jump to page
    }
...