在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>