光标问题

时间:2010-12-26 19:11:14

标签: java android cursor

我正在尝试将Cursor传递给方法。但是我收到了这个错误。

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 个答案:

答案 0 :(得分:2)

您的OnClickListener是一个匿名内部类。您不能使用范围在匿名内部类之外的非final变量。

这是因为匿名内部类获取所有局部变量的副本,因此在使用内部类时它们将可用。如果变量未标记为final,则无法保证该值是相同的。

所以你需要将光标声明为final:

public void loggedin(String title, String message, String positive, final Cursor c) {