Fragment与Fragment之间的通信

在mainactivity中有两个fragment,现在要做的是在左边的fragment中获得右边的edittext中的值,在右边的fragment中获取左边的edittext中的值。
在这里需要注意的是fragment中也可以通过<span style="font-family: Arial, Helvetica, sans-serif;">getFragmentManager来获得fragmentManager,然后通过ragmentManager来获得fragment,通过的是tag来得到</span>


MainActivity

public class MainActivity extends Activity {
	FragmentManager fragmentManager;
	FragmentTransaction fragmentTransaction;
	MyFirstFragment fragment;
	MySecondFragment mysecondfragment;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main_activity);
		fragmentManager = getFragmentManager();
		fragmentTransaction = fragmentManager.beginTransaction();
		fragment = new MyFirstFragment();
		mysecondfragment = new MySecondFragment();
		fragmentTransaction.add(R.id.left, fragment, "left");
		fragmentTransaction.add(R.id.right, mysecondfragment, "right");
		fragmentTransaction.commit();

	}
}
mainactivity

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/left"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        
    </LinearLayout>

    <LinearLayout
        android:id="@+id/right"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >
        
    </LinearLayout>

</LinearLayout>

MyFirstFragment

public class MyFirstFragment extends Fragment {
	private FragmentManager fragmentManager;

	@Override
	public void onAttach(Activity activity) {
		// TODO Auto-generated method stub
		super.onAttach(activity);
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		fragmentManager = getFragmentManager();

	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {

		View view = inflater.inflate(R.layout.myfragment, null);
		Button btn = (Button) view.findViewById(R.id.leftclick);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				MySecondFragment mysecondfragment = (MySecondFragment) fragmentManager
						.findFragmentByTag("right");
				String msg = ((EditText) mysecondfragment.getView()
						.findViewById(R.id.rightedit)).getText().toString();
				Toast.makeText(getActivity(), msg, 100).show();
			}
		});
		return view;
	}

	@Override
	public void onPause() {
		super.onPause();
	}

}
myfirstFragment.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#cccc33"
    android:orientation="vertical" >

   <EditText
            android:id="@+id/leftedit"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:text="左边的值"/>

        <Button
            android:id="@+id/leftclick"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="left" />
    
</LinearLayout>

MySecondFragment

public class MySecondFragment extends Fragment {
	private FragmentManager fragmentManager;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		fragmentManager = getFragmentManager();
	}
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view=inflater.inflate(R.layout.mysecondfragment, null);
		Button btn = (Button) view.findViewById(R.id.rightclick);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				MyFirstFragment myfirstfragment = (MyFirstFragment) fragmentManager
						.findFragmentByTag("left");
				String msg = ((EditText) myfirstfragment.getView()
						.findViewById(R.id.leftedit)).getText().toString();
				Toast.makeText(getActivity(), msg, 100).show();
			}
		});
		return view;
	}
	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}

}

mysecondfragment.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F73809"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/rightedit"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="右边的值" />

    <Button
        android:id="@+id/rightclick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="right" />

</LinearLayout>





猜你喜欢

转载自blog.csdn.net/cuicanxingchen123456/article/details/50922218