Тост появляется поздно, в сочетании с фрагментом диалога - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть класс адаптера, который обрабатывает отображение списка миниатюр изображений.Когда пользователь нажимает на миниатюру, он извлекает изображение из URL и занимает около секунды, и отображает его в фрагменте диалога.Из-за задержки я хочу, чтобы там был тост с надписью «выбор изображения».Однако тост не появляется до тех пор, пока не отобразится фрагмент диалога, что бессмысленно.

Я попытался переместить тост до и после вызова, чтобы создать фрагмент диалога и все тот же результат.Я попытался с помощью AsyncTask сначала синхронизировать тост, а затем фрагмент диалога, но результат тот же.

Класс адаптера:

holder.viewThumbnail.setOnClickListener(v ->
        {
        FetchImage fetchImage = new FetchImage(MainActivity.mainActivity, rootView, position);
        fetchImage.execute();
        });

Класс FetchImage:

protected final Void doInBackground(WeakReference<Activity>... params)
        {
        if(MainActivity.animalList.get(position).getImage() == null)
            {
            MainActivity mainActivity = weakReferenceActivity.get();
            if(mainActivity != null)
                {
                new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(mainActivity, mainActivity.getString(R.string.fetching_image), Toast.LENGTH_SHORT).show());
                }
            }
        return null;
        }

protected void onPostExecute(Void result)
        {


        super.onPostExecute(result);
        MainActivity mainActivity = weakReferenceActivity.get();
        if(mainActivity != null)
            {
            mainActivity.dialogShow(view, C.NO, C.DIALOG_IMAGE, "", "", position);
            }
        }

Я также просто попытался сделать это в классе адаптера без маршрута AsyncTask:

Класс адаптера:

holder.viewThumbnail.setOnClickListener(v ->
        {
        if(MainActivity.animalList.get(position).getImage() == null)
            interfaceCommon.makeToast("fetching data", 1);
        interfaceCommon.dialogShow(rootView, C.NO, C.DIALOG_IMAGE, "", "", position);
        });

interfaceCommon - это просто общий интерфейс для вызова методов в Main Activity.У меня есть одно действие для этого приложения и несколько фрагментов.

...