How to get which fragment has been selected

前端 未结 4 1143
余生分开走
余生分开走 2021-01-02 05:39

I am creating a tab application, using fragments.

I have successfully created tabs, but now I need to create an object when a specific fragment is selected. e.g. Whe

4条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-01-02 06:11

    Try this

        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            ft.replace(R.id.fragment_container, fragment);
    
            if(fragment instanceof SettingsTab){
                doSettingsMethod();
            }
    
            if(fragment instanceof Tab1){
                doOtherMethod1();
            }
    
            if(fragment instanceof Tab2){
                doOtherMethod2();
            }
    
            if(fragment instanceof Tab3){
                doOtherMethod3();
            }
        }
    

    Also you may change TabListener class in this way. As for me it's a better design.

    class MyTabsListener implements ActionBar.TabListener {
        public Fragment fragment;
        private final Runnable onSelect;
    
        public MyTabsListener(Fragment fragment) {
            this.fragment = fragment;
            this.onSelect = null;
        }
    
        public MyTabsListener(Fragment fragment, Runnable onSelect) {
            this.fragment = fragment;
            this.onSelect = onSelect;
        }
    
    
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            Toast.makeText(MainActivity.appContext, "Reselected!", Toast.LENGTH_LONG).show();
        }
    
    
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            ft.replace(R.id.fragment_container, fragment);
            if(onSelect != null){
                fragment.getActivity().runOnUiThread(onSelect);
            }
        }
    
    
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            ft.remove(fragment);
    
    
        }
    }
    

提交回复
热议问题