我正在尝试将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();
}
答案 0 :(得分:2)
您的OnClickListener是一个匿名内部类。您不能使用范围在匿名内部类之外的非final变量。
这是因为匿名内部类获取所有局部变量的副本,因此在使用内部类时它们将可用。如果变量未标记为final,则无法保证该值是相同的。
所以你需要将光标声明为final:
public void loggedin(String title, String message, String positive, final Cursor c) {