2014-10-30 2 views
0

Udacity Android 코스의 코드에서 어떤 일이 벌어지고 있는지 알고 싶습니다.안드로이드 - 계약 및 공급자 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입니다 :

WeatherContract

WeatherProvider

답변