C_lionking 2020-05-19 17:07 采纳率: 33.3%
浏览 520
已采纳

关于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();
        }
    }

求帮助!卡了两天了

  • 写回答

2条回答 默认 最新

  • Xia_燚 2020-05-20 10:00
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同