Используйте Asynctask для нескольких фрагментов - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть 2x фрагмента java-классов, которые должны использовать ту же асинктаскуЕсть ли в любом случае, я могу сделать это, или мне нужно скопировать / вставить одну и ту же asynctask в обоих классах фрагмента?у меня есть эти 3 Java-класса в общей сложности:

  • MainActivity
  • dataTabelFragment
  • sensorOverviewFragment

Асинктаска выборки данных из URL-адреса json.

Может быть, можно создать еще один Java-класс для асинхронной задачи?

Вся помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Полагаю, ваши фрагменты совпадают с Activity (MainActivity), поэтому вы можете поместить AsyncTask в MainActivity.class, и ваши фрагменты могут общаться с вашим Activity со слушателем.Как то так:

public class YourFragment extends Fragment{

    private YourListener mListener;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            mListener = (YourListener) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString() + " must implement YourFragment");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

    interface OnSearchFilterListener {

        void onItemClick(int position);

    }   

}
0 голосов
/ 20 сентября 2018

То, что вы говорите, предполагает, что вы должны отделить свой код асинхронной задачи от обоих фрагментов и вместо этого иметь отдельного работника (возможно, вместо этого IntenstService будет хорошо вас обслуживать), который вы, фрагменты, призовете для выполнения работы.Или, в зависимости от вашей структуры кода (вы должны подумать об этом, если вы еще этого не сделали :), возможно, ваш код асинхронной задачи должен быть частью базового класса ваших фрагментов, который они оба затем расширят.

...