尝试使用getContentResolver()初始化Cursor时出现NullPointerException

时间:2013-01-07 03:34:25

标签: android nullpointerexception android-cursor

所以我要做的是在另一个活动中显示我的数据库并添加一个onItemClickListener。然后我通过使用URI发送我的信息到另一个类。我正在检索收件人类中的uri并使用它来创建一个Cursor。 当我尝试使用getContentResolver()。query()初始化我的Cursor时,我在日志中得到nullpointerexception。代码行如下所示:

Cursor cursor = getContentResolver().query(uri, null, null, null, null);

我使用的uri变量来自这行代码:

Uri uri = getIntent().getData();

为了确保返回某种uri,我在我的日志中输出uri并得到了: content://com.example.myfirstapp.ContactProvider/CONTACT/(所选项目的ID)

这是我的日志:

01-06 21:31:43.913: E/AndroidRuntime(619): Caused by: java.lang.NullPointerException
01-06 21:31:43.913: E/AndroidRuntime(619):  at com.example.myfirstapp.ContactActivity.onCreate(ContactActivity.java:22)

第22行的代码:

Cursor cursor = getContentResolver().query(uri, null, null, null, null);

2 个答案:

答案 0 :(得分:0)

你的行应该是这样的

Uri uri = getIntent().getData();
Cursor cursor = getContentResolver().query(uri, null, null, null, null);

而不是

Cursor cursor = getContentResolver().query(uri, null, null, null, null);
Uri uri = getIntent().getData();

您在初始化之前使用过uri。 并检查清单权限

android.permission.READ_CONTACTS 

答案 1 :(得分:0)

此代码

Cursor cursor = getApplicationContext().getContentResolver().query(uri, null, null, null, null);

完成这项工作。请勿在{{1​​}}之前调用您的函数。