【问题标题】:How to call AsyncTask from another fragment while using Tablayout with viewpager?如何在将 Tablayout 与 viewpager 一起使用时从另一个片段调用 AsyncTask?
【发布时间】:2017-10-13 19:08:45
【问题描述】:

我试图从另一个片段而不是我声明 AsyncTask 的类调用 AsyncTask。我将自定义选项卡布局与 viewpager 一起使用。选项卡布局包含四个选项卡。我想在选择特定选项卡时调用 Web 服务。所以我在使用 tablayout 的主要片段中编写了 OnTabSelected()。我的 AsyncTask 在第二个选项卡中。我想在 OnTabSelected() 方法中选择第二个选项卡时调用 Web 服务。我是android开发的新手。那么如何才能做到这一点呢?

【问题讨论】:

    标签: android web-services android-fragments android-asynctask android-adapter


    【解决方案1】:

    像这样使用viewpager's addOnPageChangeListener事件:

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
                }
    
                @Override
                public void onPageSelected(int position) {
                    if(position == 1){
                      //call your webservice here 
                    }
                }
    
                @Override
                public void onPageScrollStateChanged(int state) {
    
                }
            });
    

    注意页面位置从 0 开始,所以你的第二个标签位置是 1。

    编辑:如何获取当前片段的实例

    Fragment f = getActivity().getFragmentManager().findFragmentById(R.id.fragment_container);
    if (f instanceof SecondFragmentClass) {
        f.doSomething();
    }
    

    注意:如果你提供了标签,你可以使用 findFragmentByTag() 代替 findFragmentById

    更新:

     if(position == 1){
             Fragment page = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + ViewPager.getCurrentItem());
             // based on the current position you can then cast the page to the correct 
             // class and call the method:
             if (page != null) {
                  ((SecondFragmentClass)page).updateList("new item");     
             } 
        return true;
        }
    

    检查这个答案以获得更好的理解ig https://stackoverflow.com/a/18611036/5895830

    【讨论】:

    • 如何获取当前片段的实例意味着第二个片段来执行任务?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2013-12-27
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多