Не могу понять почему не работает слушатель на SharedPreferences. Пожалуйста подскажите что сделал не так?
public class TomorrowForecastAdapter extends Fragment implements SwipeRefreshLayout.OnRefreshListener, SharedPreferences.OnSharedPreferenceChangeListener {
private static final String TAG = "TomorrowForecast";
protected AppBridge appBridge;
private PictureAdapter mPictureAdapter = new PictureAdapter();
private SwipeRefreshLayout mSwipeRefreshLayout;
List<Forecast> forecasts = new ArrayList<>();
private SharedPreferences tomorrowWeatherSharedPreferences;
TomorrowWeatherOnAllDayAdapter mTomorrowWeatherOnAllDayAdapter;
RecyclerView recyclerView;
TextView tvCity;
TextView tvTemperature;
TextView textViewWind;
TextView textViewDate;
List<Weather> mListWeather;
ImageView imageView;
private DayOfWeek dayOfWeek = new DayOfWeek();
private BackWeek backWeek;
private PictureAdapter pictureAdapter = new PictureAdapter();
LinearLayoutManager mLinearLayoutManager;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
appBridge = (AppBridge) getActivity().getApplication();
tomorrowWeatherSharedPreferences.registerOnSharedPreferenceChangeListener(this);
View view = inflater.inflate(R.layout.fragment_temp2, null);
tvCity = (TextView) view.findViewById(R.id.textViewCity);
recyclerView = (RecyclerView) view.findViewById(R.id.listTomorrow);
tvTemperature = (TextView) view.findViewById(R.id.textViewTemperature2);
textViewWind = (TextView) view.findViewById(R.id.textViewVeter);
textViewDate = (TextView) view.findViewById(R.id.textViewDate);
imageView = (ImageView) view.findViewById(R.id.imageView);
mTomorrowWeatherOnAllDayAdapter = new TomorrowWeatherOnAllDayAdapter(getActivity().getApplication());
recyclerView.setAdapter(mTomorrowWeatherOnAllDayAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity().getApplication(), LinearLayoutManager.HORIZONTAL, false));
mSwipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_container_tomorrow);
mSwipeRefreshLayout.setOnRefreshListener(this);
loadTomorrowWeather();
return view;
}
public void loadTomorrowWeather() {
backWeek = SharedPrefHelper.getInstance().getWeatherWeekData();
tvCity.setText(backWeek.getCity().getName());
textViewDate.setText(new SimpleDateFormat("MM.dd").format(backWeek.getList().get(0).getDtTxt()));
tvTemperature.setText(String.format("%s°C", backWeek.getList().get(0).getMain().getTemp()));
imageView.setImageResource(pictureAdapter.setImage(backWeek.getList().get(0).getWeather().get(0).getIcon()));
textViewWind.setText(String.format(getString(R.string.wind) + " %s " + getString(R.string.mVs)+ " " + getString(R.string.cloudy) + " %s%%",
backWeek.getList().get(0).getWind()
.getSpeed().toString(), backWeek.getList().get(0).getClouds().getAll().toString()));
mTomorrowWeatherOnAllDayAdapter.addData(getTomorrowWeatherList(backWeek.getList()));
/*appBridge.getNetManager().getWeekWeather(new Callback<BackWeek>() {
@Override
public void onResponse(Call<BackWeek> call, Response<BackWeek> response) {
if (response.isSuccessful()) {
Log.d("qwe", "ok");
tvCity.setText(response.body().getCity().getName());
textViewDate.setText(new SimpleDateFormat("MM.dd").format(response.body().getList().get(0).getDtTxt()));
tvTemperature.setText(String.format("%s°C", response.body().getList().get(0).getMain().getTemp()));
imageView.setImageResource(pictureAdapter.setImage(response.body().getList().get(0).getWeather().get(0).getIcon()));
textViewWind.setText(String.format(getString(R.string.wind) + " %s " + getString(R.string.mVs)+ " " + getString(R.string.cloudy) + " %s%%",
response.body().getList().get(0).getWind()
.getSpeed().toString(), response.body().getList().get(0).getClouds().getAll().toString()));
mTomorrowWeatherOnAllDayAdapter.addData(getTomorrowWeatherList(response.body().getList()));
} else {
Log.d("qwe", "!ok");
}
}
@Override
public void onFailure(Call<BackWeek> call, Throwable t) {
t.printStackTrace();
}
});*/
}
private List<Forecast> getTomorrowWeatherList(List<Forecast> list){
List<Forecast> weatherList = new ArrayList<>();
Date currentDate = new Date();
Date dateForChange = new Date();
Long time = currentDate.getTime();
time = time + (60*60*24*1000);
currentDate = new Date(time);
for (int i = 0; i < list.size();i++){
if (list.get(i).getDtTxt().getTime() <= currentDate.getTime() && list.get(i).getDtTxt().getTime() >= dateForChange.getTime() ){
weatherList.add(list.get(i));
}
}
return weatherList;
}
@Override
public void onRefresh() {
appBridge.getRequest().requestWeekWeather();
// loadTomorrowWeather();
mSwipeRefreshLayout.setRefreshing(false);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tomorrowWeatherSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());// getActivity().getSharedPreferences(SharedPrefHelper.DATA_WEATHER_WEEK, 0);
tomorrowWeatherSharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onResume() {
super.onResume();
loadTomorrowWeather();
tomorrowWeatherSharedPreferences
.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
tomorrowWeatherSharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onDestroy() {
super.onDestroy();
tomorrowWeatherSharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
Log.d(TAG, "onSharedPreferenceChanged");
Toast.makeText(getContext() , "Listener is working!", Toast.LENGTH_LONG).show();
if (s.equals(SharedPrefHelper.DATA_WEATHER_WEEK)) {
loadTomorrowWeather();
}
}
}
Вы создали лисенер, но ни к чему его не применили, вот он и не работает. Попробуйте сначала инициализировать, потом проставлять
Реализация слушателя изменений в преференсах в фрагменте:
public class MyFragment extends Fragment implements SharedPreferences.OnSharedPreferenceChangeListener {
SharedPreferences todayWeatherSharedPreferences;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
todayWeatherSharedPreferences = getActivity().getSharedPreferences(SharedPrefHelper.DATA_WEATHER_NOW, 0);
todayWeatherSharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть лента которая реализована при помощи RecyclerView, заполняю её при помощи AsyncTask
Как можно центрировать элементы списка <li> относительно границ списка <ul>?