Обновление данных на активности
Ситуация. У вас есть, к примеру, окно со списком.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); list = (ListView)findViewById(R.id.list); ArrayAdapter adapter = new ArrayAdapter(this, 0, array); list.setAdapter(adapter); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(mContext, EditActivity.class); startActivity(intent); } }); } |
По нажатию на элемент списка у нас открывается редактирование элемента. Всё отредактировали. Возвращаемся обратно и видим, что никаких изменений у нас в списке не произошло. Это происходит потому, что жизненный цикл приложения в Android идёт таким образом (в данном случае. Вообще схема там побольше) : onCreate -> onPause -> onResume.
При возвращении на активность вызывается onResume, а не onCreate. А значит, чтобы список у нас обновился, нам нужно обновить данные в onResume тоже.
С другой стороны можно при переходе на другую активность вызывать finish() у текущей, чтобы каждый раз при возврате на неё onCreate вызывался заново.
Позор какой-то. Отписываюсь от блога.
Самый простой вариант — вызывать в onActivityResult
adapter.notifyDataSetChanged()
Я знаю этот вариант, но в данном случае мне это не нужно ;)
Почему? onActivityResult вызовется как раз тогда, когда мы закончим редактировать элемент.
Во-первых, он не всегда сработает. На stackoverflow народ много на эту тему матерится. Если возвращаться по кнопке Back, то да, сработает 100%.
Во-вторых, это нужно дёргать startActivityForResult, переопределять onActivityResult, а если есть уже onResume, в котором что-то делается (к примеру запускается геолокация), то делать onActivityResult в таком простом примере Я не вижу смысла
Ну ладно, согласен. Просто не нужно называть это подвохом, это азы Android. Подвох — это когда моё приложение не работает на некоторых девайсах с кастомными (или китайскими) прошивками (а мне каждый юзер очень важен)
Ок, сейчас подправлю :)
Насчёт кастомных – это жесть, согласен. У меня в MIUI не работает корректно приложение. Причём не понятно почему, в logcat’e всё ок :( debug’ом тоже ничего не ищется :(