关于Android ViewPager+Fragment,在Fragment里弹框的问题

一共三个Fragment,每次我想在请求网络的之前弹出一个等待框。但都要等到网络请求完毕,并且Fragment里的数据都更新完了这个框才弹出来。我打断点一步一步走也是,dialog.show()都已经执行过了,但手机上框还没有弹出来 , 一直走到adapter.notifyDataSetChanged()把数据更新了才弹出来。

这是我的Fragment

public class FindFragment extends Fragment

这个changeRandBook()方法是写到上面那个FindFagment里的,一直到最后randAdapter.notifyDataSetChanged(),框才弹出来

private void changeRandBook()
    {
        WaitDialog waitDialog = new WaitDialog(getContext());
        waitDialog.show();

        List<String> nameList = new ArrayList<>(SIZE);
        nameList.add(PARAM_ACTION);
        nameList.add(PARAM_RAND_COUNT);

        List<String> valueList = new ArrayList<>(SIZE);
        valueList.add(ACTION_RAND_LIST);
        valueList.add(RAND_COUNT);

        try(Response response = createRequestCall(ROOT_URL + BOOK_URL , nameList , valueList))
        {
            List<Book> tempList = new Gson().fromJson(response.body().string() , new TypeToken<List<Book>>(){}.getType());
            randBookList.clear();
            randBookList.addAll(tempList);
            randAdapter.notifyDataSetChanged();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }

求帮助!卡了两天了

1个回答

在此之前有个问题,就是ViewPager与Fragment 懒加载你处理了没有?
如果你没有处理的话, 当你打开第一个Fragment的时候,已经初始化了第二个Fragment的View,有一种情况就是 三个Fragment 你只弹出一个等待的加载页面的弹窗。

还有就是 在页面初始化onCreateView 方法中初始化 WaitDialog waitDialog = new WaitDialog(getContext());

C_lionking
C_lionking 谢谢已经解决了,我在当前Fragment show弹窗然后在onStart方法里dimiss就能正常弹窗了
4 个月之前 回复
C_lionking
C_lionking onCreateView方法里创建弹框也试过,同样的情况,都是等网络请求完了,数据加载完了,而且还不写dismiss才能弹出来,如果写了dismiss根本不弹
4 个月之前 回复
C_lionking
C_lionking 懒加载尝试过,弹框确实能出来,但是dismiss无效,弹框一出来就不会消失,所以我感觉好像跟懒加载没啥关系
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问