iT邦幫忙

0

在BottomNavigationView 環境下使用 TabsPagerAdapter 使用者正在看哪頁問題

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20200423/20109685uAFToffHBA.jpg
我目前在使用setUserVisibleHint當使用者看到這個畫面的時候觸發 讓使用者能看到資料庫的最新資料
目前的問題是如圖我從F1到F2的時候是很順利就能觸發執行的,但當我從F2回來F1的時候他是有觸發拉 但是他是觸發我放在F1的setUserVisibleHint,我的F1只是畫面設定。
我是想讓他跑T1的setUserVisibleHint 我有試過從T2轉到T1他是有順利執行的 所以我目前找出的問題是如何在進入F1的時候讓程式碼知道我目前在看T幾。

F1程式碼

public class tab1 extends BaseLazyFragment {

    private String user_id,phone,cookie;
    private TabLayout mTablayout ;
    private ViewPager pager ;
    TabsPagerAdapter myAdapter;

    //接收從home傳來的值
    public  tab1( Object id_user, Object id_phone, Object cookieStr){
        user_id = (String) id_user;
        phone = (String) id_phone;
        cookie = (String) cookieStr;
    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_tab1, container, false);
        initView(view);
        return view;
    }
    private void initView(View view){
        pager  =  view.findViewById(R.id.viewPage);
        mTablayout  =  view.findViewById(R.id.tabs);
        //tab選項文字
        mTablayout.addTab(mTablayout.newTab().setText("最新動態"));
        mTablayout.addTab(mTablayout.newTab().setText("人氣商品"));
        mTablayout.addTab(mTablayout.newTab().setText("熱銷排行"));
        myAdapter = new TabsPagerAdapter(getChildFragmentManager(), FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT, mTablayout.getTabCount());

        //由於父Fragment是巢狀在Activity中的,而Activty除非不顯示,否則是不會被銷燬的,即getSupportFragmentManager()會一直存在,在父Fragemnt中顯示一般會很穩定正常。
        //由於在子Fragment中getFragmentManager()返回的父Fragment的FragmentManager,所以一旦父Fragment在切換的過程中被銷燬,則FragmentManager丟失,造成子Fragment顯示錯誤。
        //而getChildFragmentManager()會判斷Fragment的狀態,對FragmentManager進行儲存,則不會出現上面的問題。
        pager.setAdapter(myAdapter);
        pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTablayout));
        mTablayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                pager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }

        });
    }
    @Override
    public void onLazyLoad() {

    }
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答