我只是想了解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:
答案 0 :(得分:0)
客观地说,这是我的问题的答案。
SQLiteQueryBuilder - &gt; setTables - &gt; http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html#setTables%28java.lang.String%29