我只想了解Udacity Android课程中我的代码中发生了什么。Android - Contract and Provider JOIN交互
当我使用一种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: