BroadcastReceiver receiver=new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String account=intent.getStringExtra("account"); String password=intent.getStringExtra("password"); } };执行了之后执行Cursor cursor= db.rawQuery("select*from user where account=?",new String[]{account});出错
时间: 2024-01-22 22:04:23 浏览: 391
这个错误很可能是因为 `account` 变量没有被正确地传递到 `db.rawQuery()` 方法中。这是因为 `account` 变量是在 `onReceive()` 方法中被定义的,而 `db.rawQuery()` 方法是在 `onReceive()` 方法之外调用的。因此,`account` 变量的作用域仅限于 `onReceive()` 方法内部。
要解决这个问题,您可以在 `onReceive()` 方法中将 `account` 变量存储在类成员变量中,并在 `db.rawQuery()` 方法中使用该成员变量。例如:
```
public class MyBroadcastReceiver extends BroadcastReceiver {
private String account;
@Override
public void onReceive(Context context, Intent intent) {
account = intent.getStringExtra("account");
String password = intent.getStringExtra("password");
// ... 其他代码 ...
}
private void doDatabaseQuery() {
Cursor cursor = db.rawQuery("select * from user where account = ?", new String[]{account});
// ... 其他代码 ...
}
}
```
请注意,这里使用了一个名为 `MyBroadcastReceiver` 的类,而不是您在问题中提到的匿名内部类。这是因为使用匿名内部类可能会导致其他作用域问题,并且不易于重用代码。
阅读全文