![](/img/trans.png)
[英]how to call fragment from another fragment in tablayout with viewpager
[英]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.