This example demonstrate about How to pass data from one fragment to another fragment in android
Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.
Step 2 − Add the following code to res/layout/activity_main.xml.
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android" android:orientation = "vertical" android:layout_width = "match_parent" android:layout_height = "match_parent"> <LinearLayout android:id = "@+id/linearlayout01" android:layout_width = "fill_parent" android:layout_height = "fill_parent" android:background = "#ccc" android:layout_weight = "1" android:orientation = "vertical"> <fragment android:name = "com.example.myapplication.FirstFragment" android:id = "@+id/frag_1" android:layout_width = "fill_parent" android:layout_height = "fill_parent" /> </LinearLayout> <LinearLayout android:id = "@+id/linearlayout02" android:layout_width = "fill_parent" android:layout_height = "fill_parent" android:layout_weight = "1" android:background = "#eee" android:orientation = "vertical"> <fragment android:name = "com.example.myapplication.SecondFragment" android:id = "@+id/frag_2" android:layout_width = "fill_parent" android:layout_height = "fill_parent" /> </LinearLayout> </LinearLayout>
In the above code, we have taken fragments to pass the data between two fragments.
Step 3 − Add the following code to src /MainActivity.java
<?xml version = "1.0" encoding = "utf-8"?> import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity implements OnButtonPressListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onButtonPressed(String msg) { // TODO Auto-generated method stub SecondFragment Obj = (SecondFragment) getSupportFragmentManager().findFragmentById(R.id.frag_2); Obj.onFragmentInteraction(msg); } }
Step 4 − Add the following code to src / FirstFragment.java
<?xml version = "1.0" encoding = "utf-8"?> import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class FirstFragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment, null); init(root); return root; } OnButtonPressListener buttonListener; @Override public void onAttach(Activity activity) { super.onAttach(activity); try { buttonListener = (OnButtonPressListener) getActivity(); } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement onButtonPressed"); } } void init(ViewGroup root) { TextView but = (TextView)root.findViewById(R.id.text); but.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub buttonListener.onButtonPressed("Message From First Fragment"); } }); } }
Step 5 − Add the following code to src / SecondFragment.java
<?xml version = "1.0" encoding = "utf-8"?> import android.annotation.SuppressLint; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class SecondFragment extends Fragment { TextView textView; View view; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment, container, false); return view; } public void onFragmentInteraction(String uri) { Log.d("sai",uri); textView = view.findViewById(R.id.text); textView.setText(uri); } }
Step 6 − Add the following code to res/layout/ fragment.xml.
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:gravity = "center" android:layout_height = "match_parent"> <TextView android:id = "@+id/text" android:textSize = "30sp" android:text = "Click" android:layout_width = "wrap_content" android:layout_height = "wrap_content" /> </LinearLayout>
Step 7 − Add the following code to src/ OnButtonPressListener.java.
<?xml version = "1.0" encoding = "utf-8"?> public interface OnButtonPressListener { public void onButtonPressed(String msg); }
Let's try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from android studio, open one of your project's activity files and click Run icon from the toolbar. Select your mobile device as an option and then check your mobile device which will display your default screen –
Now click on first fragment text view, it will show the result as shown below –