обновить ListFragment после завершения действия - PullRequest
3 голосов
/ 23 марта 2012

Я создал фрагмент списка и кнопку, которая выглядит следующим образом (изображение слева)

всякий раз, когда я нажимаю кнопку «ДОБАВИТЬ», открывается новое действие, и внутри этого пользователя что-то пишется и нажимается «Готово»., активация завершается и возвращается к ListFragment, но после нажатия кнопки DONE как я обновлю ListFragment новыми значениями.я имею в виду, где я могу написать notifyDataSetChanged.

enter image description here

Примечание: когда я нажимаю кнопку DONE, данные сохраняются в базе данных, а при загрузке ListFragment он извлекаетданные внутри него

я использую библиотеку совместимости с поддержкой Android

Ответы [ 2 ]

5 голосов
/ 23 марта 2012

Вы должны использовать StartActivityForResult ().

//place in shared location
int MYACTIVITY_REQUEST_CODE = 101

//start Activity
Intent intent = new Intent(getActivity(), MyActivity.class);
startActivityForResult(intent, MYACTIVITY_REQUEST_CODE);

Затем вы должны переопределить onActivityResult () во фрагменте.Метод будет вызван после закрытия операции.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if ((requestCode == MYACTIVITY_REQUEST_CODE) && (resultCode == Activity.RESULT_OK))
        adapter.notifyDataSetChanged()
}

Код результата устанавливается в операции до ее завершения с помощью:

setResult(Activity.RESULT_OK)

Использование requestCode и resultCode действительнонеобязательный.Вам нужно использовать requestCode, только если вы запускаете более одного действия из фрагмента.Вам нужно использовать resultCode только в том случае, если вам нужно возвращать разные результаты из действия.

1 голос
/ 15 мая 2012

В качестве альтернативы, вы также можете позвонить self.setListAdapter() еще раз в onActivityResult(). У меня все работало нормально.

...