Passing data from one fragment to another

后端 未结 4 1877
星月不相逢
星月不相逢 2020-12-06 20:25

I have an Activity with two fragments and I need to pass a string from FragmentA to FragmentB.

To pass the data, I have this in my FragmentA:

    Int         


        
相关标签:
4条回答
  • 2020-12-06 20:37
    1. If fragments are hosted by same activity- You cannot cast an intent to Fragment. Fragment acts as a part of Activity, it is not an activity by itself. So to share a string between fragments you can declare a static String in Activity. Access that string from Fragment A to set the value and Get the string value in fragment B.
    2. Both fragments are hosted by different Activities- Then you can use putExtra to pass a string from Fragment A of Activity A to Activity B. Store that string in Activity B and use it in Fragment B.
    0 讨论(0)
  • 2020-12-06 20:37

    Code in FragmentActivity 1 fragment A:

    fb is the instance of the bean I created and ID is the parameter

    Intent intent = new Intent(getContext(), FragmentActivity2.class);
            intent.putExtra("id", fb.ID);
    startActivity(intent);
    

    Code in FragmentActivity 2 fragment Any:

    fragmentA= (FragmentActivity2) getActivity();
    String cust_id = fragmentA.getIntent().getExtras().getString("id");
    
    0 讨论(0)
  • 2020-12-06 20:52

    You can do something like below,

     Fragment fr=new friendfragment();
     FragmentManager fm=getFragmentManager();
     android.app.FragmentTransaction ft=fm.beginTransaction();
     Bundle args = new Bundle();
     args.putString("CID", "your value");
     fr.setArguments(args);
     ft.replace(R.id.content_frame, fr);
     ft.commit(); 
    

    To receive the data do the following,

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        String strtext = getArguments().getString("CID");    
        return inflater.inflate(R.layout.fragment, container, false);
    }
    
    0 讨论(0)
  • 2020-12-06 20:57

    to pass data between Fragments you can use setArguments(Bundle b). For instance:

    public class FragmentA extends Fragment {
    
      public static FragmentA newInstance(String name) {
        Bundle bundle = new Bundle();
        bundle.putString("name", name);
        FragmentA f = new FragmentA(); 
        f.setArguments(bundle);
        return f;
      }
    
    }
    
    0 讨论(0)
提交回复
热议问题