Проблема с курсором - PullRequest
       1

Проблема с курсором

0 голосов
/ 26 декабря 2010

Я пытаюсь передать курсор в метод.Но я получаю эту ошибку.

Cannot refer to a non-final variable c inside an inner class defined in a different method

код.

public void loggedin(String title, String message, String positive, Cursor c) {
    AlertDialog.Builder alertbox = new AlertDialog.Builder(
            HomeActivity.this);
    alertbox.setTitle(title);
    alertbox.setMessage(message);
    alertbox.setPositiveButton(positive,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    String username = c.getString(0);
                    MessagingApplication.setUsername("");
                    String currentUserName=MessagingApplication.getUsername();
                    Toast.makeText(HomeActivity.this, currentUserName, 5);

                    alertbox("Error", currentUserName,
                            "Back", null);

                    Intent i = new Intent(HomeActivity.this,
                            MailActivity.class);
                    //startActivity(i);
                }
            });

    alertbox.show();
}

1 Ответ

2 голосов
/ 26 декабря 2010

Ваш OnClickListener является анонимным внутренним классом.Вы не можете использовать неконечные переменные с областью действия вне анонимного внутреннего класса.

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

Поэтому вам необходимо объявить курсор как окончательный:

public void loggedin(String title, String message, String positive, final Cursor c) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...