【问题标题】:How to use Async task in android tablayout activity...?如何在 android tablayout 活动中使用异步任务...?
【发布时间】:2016-08-02 10:12:13
【问题描述】:

大家好,需要知道在选项卡布局活动中使用异步的正确方法是什么。

在我的任务中有一个带有两个选项卡的活动。

Tab1Tab2

Tab1 从服务器加载数据并显示数据。

Tab2 还从服务器加载另一个数据并在列表视图中显示数据。

我在 tab1 和 tab2 中使用异步任务,但问题是当活动开始时,两个 异步任务类同时执行导致错误。

当第一个选项卡片段可见时,我需要如何使用它,然后运行第一个 异步任务,当第二个片段可见时,然后运行 ​​第二个异步任务减一。

【问题讨论】:

    标签: android listview android-fragments asynchronous


    【解决方案1】:

    您可以同时使用这两种情况:

    1) 您可以在活动中同时调用AsyncTasks 并在两个选项卡中显示数据。

    2) 根据问题

    我在 tab1 和 tab2 中使用异步任务,但问题是当活动开始时,两个异步任务类同时执行导致错误。

    您应该在setUserVisibleHint()方法中执行您的AsyncTask,该方法将在您的片段完全可见时调用。

    用途:

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        // TODO Auto-generated method stub
        super.setUserVisibleHint(isVisibleToUser);
    
        if (isVisibleToUser) {
          // execute your asynctask here
        }
    }
    

    【讨论】:

    • 在哪里以及如何使用 setUserVisibleHint() 方法
    • 它是fragment的覆盖方法。所以你需要同时调用 Tab1Tab2
    • 谢谢兄弟我会尝试
    • @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser);新的 DownloadFilesTask(getContext()).execute(); } 导致 NullPointerException
    • 您的 getContext() 为空。你应该使用 getActivity()
    【解决方案2】:

    在我看来,你最好只使用一个异步任务从服务器获取数据,然后一个一个地处理标签

    【讨论】:

    【解决方案3】:

    OnTabSelectedListener 添加到您的TabLayout

    // run asynctask 1 first and then
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                if (tab.getPosition() == 0)
                    // run asynctask 1
                else // run asynctask2
            }
    
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
    
            }
    
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
    
            }
        });
    

    【讨论】:

      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多