上一篇介绍了Fragment的生命周期,大致了解了Fragment的生命周期与其所绑定的Activity有密切的关系,这一篇我们学习下Fragment之间的通信;
话不多说,通过实例来学习:
定义两个Fragment,让他们显示在同一Activity中,注意只有两个Fragment处于同一个Activity中的时候才会涉及到他们之间的通信
fragment1.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:orientation="vertical" android:background="#ffff00"> <Button android:id="@+id/btfragment1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获得Fragment的EditText值" /> <TextView android:id="@+id/tvfragment1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
fragment2.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:orientation="vertical" android:background="#00ff00"> <EditText android:id="@+id/etfragment2" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
Fragment1.java
public class Fragment1 extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment1,container,false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Button button = (Button)getActivity().findViewById(R.id.btfragment1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { EditText et = (EditText)getActivity().findViewById(R.id.etfragment2); TextView tv = (TextView)getActivity().findViewById(R.id.tvfragment1); tv.setText(et.getText());//从Fragment2的EditText里面获取到值显示在Fragment1的TextView里面 } }); } }
Fragment2.java
public class Fragment2 extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment2,container,false); } }
用于显示Fragment的布局文件:fragment_communicate.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:orientation="vertical" > <fragment android:name="com.hzw.programmingtest.Fragment1" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1"/> <fragment android:name="com.hzw.programmingtest.Fragment2" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1"/> </LinearLayout>
用于显示布局文件的Activity:
public class CommunicateActivity extends FragmentActivity{ @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.fragment_communicate); } }
程序运行结果:
时间: 2024-10-13 23:19:03