Program: 20163
Project: 20163
Buggy source:
private void refresh(){
  final WeatherClient client=WeatherClientDefault.getInstance();
  config=new WeatherConfig();
  String cityId=prefs.getString("String_Node_Str",null);
  Log.d("String_Node_Str","String_Node_Str" + cityId + "String_Node_Str");
  if (cityId == null) {
    getListener().requestCompleted();
    return;
  }
  config.lang=WeatherUtil.getLanguage(prefs.getString("String_Node_Str","String_Node_Str"));
  config.maxResult=5;
  config.numDays=5;
  String unit=prefs.getString("String_Node_Str","String_Node_Str");
  if (unit.equals("String_Node_Str"))   config.unitSystem=WeatherConfig.UNIT_SYSTEM.M;
 else   config.unitSystem=WeatherConfig.UNIT_SYSTEM.I;
  client.updateWeatherConfig(config);
  client.getCurrentCondition(cityId,new WeatherClient.WeatherEventListener(){
    @Override public void onWeatherRetrieved(    CurrentWeather weather){
      getListener().requestCompleted();
      cityText.setText(weather.location.getCity() + "String_Node_Str" + weather.location.getCountry());
      condDescr.setText(weather.currentCondition.getCondition() + "String_Node_Str" + weather.currentCondition.getDescr()+ "String_Node_Str");
      LogUtils.LOGD("String_Node_Str","String_Node_Str" + temp + "String_Node_Str");
      LogUtils.LOGD("String_Node_Str","String_Node_Str" + weather.temperature.getTemp() + "String_Node_Str");
      temp.setText("String_Node_Str" + ((int)weather.temperature.getTemp()));
      unitTemp.setText(weather.getUnit().tempUnit);
      colorTextLine.setBackgroundResource(WeatherUtil.getResource(weather.temperature.getTemp(),config));
      hum.setText(weather.currentCondition.getHumidity() + "String_Node_Str");
      tempMin.setText(weather.temperature.getMinTemp() + weather.getUnit().tempUnit);
      tempMax.setText(weather.temperature.getMaxTemp() + weather.getUnit().tempUnit);
      windSpeed.setText(weather.wind.getSpeed() + weather.getUnit().speedUnit);
      windDeg.setText((int)weather.wind.getDeg() + "String_Node_Str" + WindDirection.getDir((int)weather.wind.getDeg())+ "String_Node_Str");
      press.setText(weather.currentCondition.getPressure() + weather.getUnit().pressureUnit);
      sunrise.setText(WeatherUtil.convertDate(weather.location.getSunrise()));
      sunset.setText(WeatherUtil.convertDate(weather.location.getSunset()));
      imgView.setImageResource(WeatherIconMapper.getWeatherResource(weather.currentCondition.getIcon(),weather.currentCondition.getWeatherId()));
      cloud.setText(weather.clouds.getPerc() + "String_Node_Str");
      if (weather.rain.getTime() != null && weather.rain.getAmmount() != 0)       rain.setText(weather.rain.getTime() + "String_Node_Str" + weather.rain.getAmmount());
 else       rain.setText("String_Node_Str");
    }
    @Override public void onWeatherError(    WeatherLibException t){
      getListener().requestCompleted();
    }
    @Override public void onConnectionError(    Throwable t){
      getListener().requestCompleted();
    }
  }
);
}

Fixed version (ground truth):
private void refresh(){
  final WeatherClient client=WeatherClientDefault.getInstance();
  config=new WeatherConfig();
  String cityId=prefs.getString("String_Node_Str",null);
  Log.d("String_Node_Str","String_Node_Str" + cityId + "String_Node_Str");
  if (cityId == null) {
    getListener().requestCompleted();
    return;
  }
  config.lang=WeatherUtil.getLanguage(prefs.getString("String_Node_Str","String_Node_Str"));
  config.maxResult=5;
  config.numDays=5;
  String unit=prefs.getString("String_Node_Str","String_Node_Str");
  if (unit.equals("String_Node_Str"))   config.unitSystem=WeatherConfig.UNIT_SYSTEM.M;
 else   config.unitSystem=WeatherConfig.UNIT_SYSTEM.I;
  client.getHourForecastWeather(cityId,new WeatherClient.HourForecastWeatherEventListener(){
    /** 
 * This method is called to notify to the listener that the Weather information is ready
 * @param forecast {@link com.survivingwithandroid.weather.lib.model.WeatherHourForecast}
 */
    @Override public void onWeatherRetrieved(    WeatherHourForecast forecast){
    }
    /** 
 * This method is called when an error occured during the data parsing
 * @param wle {@link com.survivingwithandroid.weather.lib.exception.WeatherLibException}
 */
    @Override public void onWeatherError(    WeatherLibException wle){
    }
    /** 
 * This method is called when an error occured during the HTTP connection
 * @param t {@link Throwable}
 */
    @Override public void onConnectionError(    Throwable t){
    }
  }
);
  client.updateWeatherConfig(config);
  client.getCurrentCondition(cityId,new WeatherClient.WeatherEventListener(){
    @Override public void onWeatherRetrieved(    CurrentWeather weather){
      getListener().requestCompleted();
      cityText.setText(weather.location.getCity() + "String_Node_Str" + weather.location.getCountry());
      condDescr.setText(weather.currentCondition.getCondition() + "String_Node_Str" + weather.currentCondition.getDescr()+ "String_Node_Str");
      LogUtils.LOGD("String_Node_Str","String_Node_Str" + temp + "String_Node_Str");
      LogUtils.LOGD("String_Node_Str","String_Node_Str" + weather.temperature.getTemp() + "String_Node_Str");
      temp.setText("String_Node_Str" + ((int)weather.temperature.getTemp()));
      unitTemp.setText(weather.getUnit().tempUnit);
      colorTextLine.setBackgroundResource(WeatherUtil.getResource(weather.temperature.getTemp(),config));
      hum.setText(weather.currentCondition.getHumidity() + "String_Node_Str");
      tempMin.setText(weather.temperature.getMinTemp() + weather.getUnit().tempUnit);
      tempMax.setText(weather.temperature.getMaxTemp() + weather.getUnit().tempUnit);
      windSpeed.setText(weather.wind.getSpeed() + weather.getUnit().speedUnit);
      windDeg.setText((int)weather.wind.getDeg() + "String_Node_Str" + WindDirection.getDir((int)weather.wind.getDeg())+ "String_Node_Str");
      press.setText(weather.currentCondition.getPressure() + weather.getUnit().pressureUnit);
      sunrise.setText(WeatherUtil.convertDate(weather.location.getSunrise()));
      sunset.setText(WeatherUtil.convertDate(weather.location.getSunset()));
      imgView.setImageResource(WeatherIconMapper.getWeatherResource(weather.currentCondition.getIcon(),weather.currentCondition.getWeatherId()));
      cloud.setText(weather.clouds.getPerc() + "String_Node_Str");
      if (weather.rain.getTime() != null && weather.rain.getAmmount() != 0)       rain.setText(weather.rain.getTime() + "String_Node_Str" + weather.rain.getAmmount());
 else       rain.setText("String_Node_Str");
    }
    @Override public void onWeatherError(    WeatherLibException t){
      getListener().requestCompleted();
    }
    @Override public void onConnectionError(    Throwable t){
      getListener().requestCompleted();
    }
  }
);
}