Застрял на 17 главе книги Android programming (Big nerd ranch). Помогите разобраться, что делаю не так.
Сделал как положено в классе фрагмента детализации интерфейс Callbacks с методом обновления другого фрагмента. В переменную ссылочного типа интерфейса
mCallbacks получаю свой HostActivity (с помощью переопределения
onAttach()), в котором у меня есть реализация этого метода запускающая обновление
RecyclerView.
public void onCrimeUpdated(Crime crime) {
CrimeListFragment listFragment = (CrimeListFragment)
getSupportFragmentManager()
.findFragmentById(R.id.fragment_container);
listFragment.updateUI();
}
Но обновление происходит, только после перерисовки всех фрагментов (когда например переворачиваю устройство), хотя в этом задействован тот же самый метод
updateUI() который не обновляет список, если вызван из переменной mCallbacks.
public void updateUI() {
CrimeLab crimeLab = CrimeLab.get(getActivity());
List<Crime> crimes = crimeLab.getCrimes();
if (mAdapter == null) {
mAdapter = new CrimeAdapter(crimes);
mCrimeRecyclerView.setAdapter(mAdapter);
} else {
mAdapter.notifyDataSetChanged();
}
}
метод onCrimeUpdated() запускается из фрагмента
private void updateCrime(){
CrimeLab.get(getActivity()).updateCrime(mCrime);
mCallbacks.onCrimeUpdated(mCrime);
}
Собственно обновление данных:
public void updateCrime(Crime crime){
String uuidString = crime.getId().toString();
ContentValues values = getContentValues(crime);
mDatabase.update(CrimeTable.NAME, values,
CrimeTable.Cols.UUID + " = ?",
new String[] { uuidString });
}
please help!