標籤:
上一篇介紹了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{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment1,container,false);}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);Button button = (Button)getActivity().findViewById(R.id.btfragment1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic 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{@Overridepublic 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{@Overrideprotected void onCreate(Bundle arg0) {super.onCreate(arg0);setContentView(R.layout.fragment_communicate);}} 程式運行結果:
android-----Fragment之間的通訊