編輯:關於Android編程
碎片之間進行交互
點擊下載源碼
很多時候,一個活動中包含一個或者多個碎片,它們彼此協作,向用戶展示一個一致的UI。在這種情況下,碎片之間能進行通信並交換數據十分重要。
1、使用上一篇中創建的同一個項目,在fragment.xml中添加TextView的標識id:
android:id="@+id/lblFragment1"
2、在fragment2.xml中添加一個Button,用於與fragment1進行交互:
3、將兩個碎片重新添加到main.xml中:
4、在FragmentsActivity.java中,注釋掉上一篇中添加的代碼,修改後如下:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction(); // WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); if (display.getWidth() > display.getHeight()) { // Fragment1 fragment1 = new Fragment1(); fragmentTransaction.replace(android.R.id.content, fragment1); } else { // Fragment2 fragment2 = new Fragment2(); fragmentTransaction.replace(android.R.id.content, fragment2); } fragmentTransaction.commit(); */ }
5、在Fragment2.java中添加如下代碼,實現與Fragment1的交互:@Override public void onStart() { // TODO Auto-generated method stub super.onStart(); Button btnGetText = (Button) getActivity() .findViewById(R.id.btnGetText); btnGetText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub TextView lbl = (TextView) getActivity().findViewById( R.id.lblFragment1);//通過getActivity()方法獲得當前嵌入了該碎片的活動,再使用findViewById()定位該碎片中包含的視圖 Toast.makeText(getActivity(), lbl.getText(), Toast.LENGTH_SHORT) .show(); } }); }
6、按F11調試應用程序,在右側的第二個碎片中單擊按鈕,可以看到彈出一個消息框,內容正是碎片1中TextView的內容,說明獲取成功~
1,標簽 標簽閃亮登場了。當LayoutInflater遇到這個標簽時,它會跳過它,並將內的元素添加到的父元素裡。迷惑了嗎?讓我們用來替換FrameLayout,並重寫之
使用“wrap_content”和“match_parent”要確保布局的靈活性並適應各種尺寸的屏幕,您應使用"
前面講到Vitamio可以支持一些流媒體,在這裡就用Vitamio來播放網絡上的一些流媒體,如:mms、rtsp、http,參考前輩的一些文章來寫一個網絡收音機程序,對於
本節引言: 本節我們繼續來學習Android中的Drawable資源,上一節我們學習了: ColorDrawable;NinePatchDrawa