我有一个应用程序有几个带有列表视图的活动,从第一个列表视图中的选择决定了第二个列表视图的内容,第二个列表视图决定了第三个的内容,等等。
我想测试第三个列表视图,但由于它需要一个意图,所以列表什么也不返回。为了解决这个问题,我可以手动将意图添加到测试中,这确实意味着它可以工作
public InspectionListActivityTest() {
super(InspectionListActivity.class);
Intent i = new Intent();
i.putExtra("guid", "abcbbf2b-5e14-4cb1-af1b-e3084b45d4cf");
setActivityIntent(i);
}
正如您从代码中看到的那样,它使用 guid 来确定我想要避免的列表 - 我在测试时经常清除数据库,所以我必须一直更改这个字段。
理想情况下,我想使用 ContentResolver 从另一个表中获取第一个 guid,这意味着我将能够始终在我的测试中提取信息,即
public InspectionListActivityTest() {
super(InspectionListActivity.class);
ContentResolver cr = getActivity().getContentResolver();
Cursor cursor = cr.query(Locations.CONTENT_URI, null, null, null, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
String guid = cursor.getString(cursor.getColumnIndex(Locations.GUID));
Intent i = new Intent();
i.putExtra(IntentFilters.LOCATION.getIntent(), guid);
setActivityIntent(i);
}
}
}
但是,我在 getActivity() 方法上得到了一个 nullpointerexception,而且我似乎无法将此 setActivityIntent 放在其他任何地方。