繁体   English   中英

将Tablayout与Viewpager一起使用时,如何从另一个片段调用AsyncTask?

[英]How to call AsyncTask from another fragment while using Tablayout with viewpager?

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

使用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;
    }

检查此ans以更好地理解ig https://stackoverflow.com/a/18611036/5895830

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM