簡體   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