【发布时间】:2014-10-30 03:48:29
【问题描述】:
我只是想了解我在 Udacity Android 课程中的代码发生了什么。
当我使用一种类型的 URI 时,JOIN 语句有效,但如果我使用另一种类型的 URI,则 JOIN 不起作用,我不明白为什么。
1-) 当我加入时它可以工作:
String sortOrder = WeatherContract.WeatherEntry.COLUMN_DATETEXT + " ASC";
mLocation = settings.getLocation();
Uri weatherForLocationUri = WeatherContract.WeatherEntry.buildWeatherLocationWithDate(
mLocation, DATE_KEY);
Log.e("URI_REQUISITE", weatherForLocationUri.toString());
return new CursorLoader(
getActivity(),
weatherForLocationUri,
new String[] {
WeatherContract.WeatherEntry.COLUMN_SHORT_DESC,
WeatherContract.WeatherEntry.COLUMN_MAX_TEMP,
WeatherContract.WeatherEntry.COLUMN_MIN_TEMP,
WeatherContract.WeatherEntry.COLUMN_HUMIDITY,
WeatherContract.WeatherEntry.COLUMN_WIND_SPEED,
WeatherContract.WeatherEntry.COLUMN_WEATHER_ID,
WeatherContract.WeatherEntry.COLUMN_PRESSURE,
WeatherContract.WeatherEntry.COLUMN_DEGREES,
WeatherContract.LocationEntry.COLUMN_LOCATION_SETTINGS // <- this row is the problem
//^ this row is the problem
},
null,
null,
sortOrder
);
2-) 当我加入时它不起作用:
String sortOrder = WeatherContract.WeatherEntry.COLUMN_DATETEXT + " ASC";
return new CursorLoader(
getActivity(),
WeatherContract.LocationEntry.CONTENT_URI,
new String[] {
WeatherContract.WeatherEntry.COLUMN_SHORT_DESC,
WeatherContract.WeatherEntry.COLUMN_MAX_TEMP,
WeatherContract.WeatherEntry.COLUMN_MIN_TEMP,
WeatherContract.WeatherEntry.COLUMN_HUMIDITY,
WeatherContract.WeatherEntry.COLUMN_WIND_SPEED,
WeatherContract.WeatherEntry.COLUMN_WEATHER_ID,
WeatherContract.WeatherEntry.COLUMN_PRESSURE,
WeatherContract.WeatherEntry.COLUMN_DEGREES,
WeatherContract.LocationEntry.COLUMN_LOCATION_SETTINGS // <- this row is the problem
//^ this row is the problem
},
WeatherEntry.COLUMN_DATETEXT+" = ?",
new String []{DATE_KEY},
sortOrder
);
您可以看到在第二个示例中找不到WeatherContract.LocationEntry.COLUMN_LOCATION_SETTING,我的应用程序崩溃了!
为什么在第一个示例中找到 WeatherContract.LocationEntry.COLUMN_LOCATION_SETTING 而在第二个示例中却没有?
为方便起见,这是我的 WeatherContract 和 WeatherProvider:
【问题讨论】:
标签: java android join android-contentprovider