FragmentTabHost & Fragments - How do I pass data between tabs?

后端 未结 3 940
遇见更好的自我
遇见更好的自我 2020-12-19 13:45

I have a MainActivity (FragmentActivity) that has a FragmentTabHost.

public class FragmentTabs extends FragmentActivity {
    private FragmentTabHost mTabHos         


        
相关标签:
3条回答
  • 2020-12-19 14:02

    You can get your fragment like this:

    YourFragment frag = (YourFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.fragmentid));
    

    To send data to a fragment you can follow this approach, creating a new transaction and sending the data through a bundle.

    Bundle arguments = new Bundle();
    arguments.putString("some id string", "your data");
    YourFragment fragment = new YourFragment();
    fragment.setArguments(arguments);
    getSupportFragmentManager().beginTransaction().add(R.id.fragmentid, fragment).commit();
    
    0 讨论(0)
  • 2020-12-19 14:13

    This can be accomplished by the 3rd argument of android.support.v4.app.FragmentTabHost.addTab(TabSpec, Class, Bundle args), then the args can be retrieved via android.support.v4.app.Fragment.getArguments()

    public class Tab1Fragment extends BaseFragment {
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // do something with the arguments
        Log.i("DEBUG", "" + getArguments());
        // ...
    }
    

    }

    0 讨论(0)
  • 2020-12-19 14:21

    OP here. To solve this problem I have overloaded the onAttachFragment method in my FragmentActivity:

    public class FragmentTabs extends FragmentActivity {
        private FragmentTabHost mTabHost;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...
        }
    
        @Override
        public void onAttachFragment(Fragment fragment) {
        super.onAttachFragment(fragment);
    
        if (fragment.getClass() == ClassA.class) {
            ClassA mClassAFragment = (ClassA)fragment
                ...
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题