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 手机淘宝抓清除消息接口
  • ¥15 C#无selenium
  • ¥15 LD衰减计算的结果过大
  • ¥15 用机器学习方法帮助保险公司预测哪些是欺诈行为
  • ¥15 计算300m以内的LD衰减
  • ¥15 数据爬取,python
  • ¥15 怎么看 cst中一个面的功率分布图,请说明详细步骤。类似下图
  • ¥15 为什么我的pycharm无法用pyqt6的QtWebEngine
  • ¥15 FOR循环语句显示查询超过300S错误怎么办