Возможно, существует очень простой способ сделать это, что потребует только одну или две строки кода, но я не уверен, как это сделать.Как обновить фрагмент после завершения работы AsyncTask в Android?
Я хочу иметь фрагменты, изначально отображающие загрузочный экран в центре экрана, после чего он запустит AsyncTask, который загружает информацию с моего сервера. После завершения AsyncTask мне нужно будет настроить представление содержимого фрагмента в другом XML-файле, а затем отобразить некоторые из того, что я получил от сервера.
Я думал, что должна быть какая-то функция, например Fragment.invalidate()
или Fragment.refresh()
, которая может помочь обновить фрагмент, но я не могу найти такую функцию.
Кроме того, если я обновить фрагмент в другой функции за пределами функции onCreateView
, нужно ли мне создавать переменные для хранения LayoutInflater
и ViewGroup
объектов, которые первоначально переданных ей, или я могу получить доступ к этим с помощью вызовов функций? Ниже примерно то, что я хочу сделать ...
public class HomeFragment extends Fragment
{
public HomeFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.loading, container, false);
(new GetDataTask()).execute(1);
return view;
}
private class GetDataTask extends AsyncTask<Integer, Void, ServerResponse>
{
@Override
protected void onPreExecute(){}
@Override
protected ServerResponse doInBackground(Integer... args)
{
int page_num = args[0];
return Server.getPosts(page_num);
}
@Override
protected void onPostExecute(ServerResponse result)
{
/*
1. Update the content view to R.layout.multi_post_list
2. Change specific text views and image views (I know how to do this part)
3. Notify that changes have been made to the Fragment, so it needs redrawn
*/
}
}
}
Примечание: ServerResponse это класс, который я создал, и Server.getPosts статическая функция, которая возвращает ServerResponse. Я знаю, что это работает в моем случае. Мне нужна помощь с очками 1 и 3 в моей onPostExecute
части моего класса GetDataTask
.
Спасибо!
Не знаете, где это 'getSelectedIndex()' приходят? Нет такого метода в Fragment.java – jas7457
https://github.com/jayway/FragmentsLab/blob/master/src/com/jayway/lab/fragments/DetailsFragment.java –