L'avertissement suivant est affiché dans mon projet -
Appel non vérifié à "getWeatherData (T, Boolean, String)" en tant que membre de type brut "IWeatherCallbackListener".
J'ai créé l'interface suivante -
public interface IWeatherCallbackListener<T> {
void getWeatherData(T weatherModel, Boolean success, String errorMsg);
}
Et l'a appelé de la manière suivante,
public class WeatherConditions {
private static IWeatherApi mWeatherApi;
/**
* @param city
* @param appId
* @param listener
*/
public static void getOpenWeatherData(String city, String appId, IWeatherCallbackListener listener) {
mWeatherApi = ApiService.getRetrofitInstance(BASE_URL_OPEN_WEATHER).create(IWeatherApi.class);
Call<OpenWeatherModel> resForgotPasswordCall = mWeatherApi.getOpenWeatherData(appId, city);
resForgotPasswordCall.enqueue(new Callback<OpenWeatherModel>() {
@Override
public void onResponse(Call<OpenWeatherModel> call, Response<OpenWeatherModel> response) {
if (response.body() != null) {
if (listener != null)
listener.getWeatherData(response.body(), true, "");
}
}
@Override
public void onFailure(Call<OpenWeatherModel> call, Throwable t) {
if (listener != null)
listener.getWeatherData(null, false, t.getMessage());
}
});
}
J'ai implémenté cette interface dans mon MainActivity et appelé la méthode comme -
WeatherConditions.getOpenWeatherData(etCityName.getText().toString(), OPEN_WEATHER_APP_ID, MainActivity.this)
Quelqu'un peut-il aider et expliquer cet avertissement.
Il semble que vous devez également déclarer votre type T
, dans votre cas, il doit s'agir d'une classe d'instance response.body()
.
Essayez de remplacer la ligne
public static void getOpenWeatherData(String city, String appId, IWeatherCallbackListener listener)
à
public static void getOpenWeatherData(String city, String appId, IWeatherCallbackListener<ResponseBody> listener)
En effet, lorsque vous déclarez votre interface
IWeatherCallbackListener<T>
Vous utilisez T et son type brut. Lorsque vous créez une instance, vous devez montrer quel type exactement vous utiliserez ou quel type exactement vous voulez recevoir comme argument.
Par exemple, si vous créez manuellement cet écouteur qui devait ressembler à ceci
IWeatherCallbackListener<ResponseBody> listener = new IWeatherCallbackListener<ResponseBody>() {
//implementation of methods
}
Même chose pour les arguments, vous devez montrer ce que T
vous pouvez recevoir.