1. 程式人生 > >Android中在程式碼中動態(用事物)新增Fragment

Android中在程式碼中動態(用事物)新增Fragment

效果


程式碼結構


在MainActivity中動態(用事物)新增LeftFragment和RightFragment

核心程式碼:

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    <!-- 放LeftLeftFragment的佈局 -->
    <LinearLayout
        android:id="@+id/left"
        android:layout_weight="5"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" 
        android:background="#F5DEB3"
        >
         
        
        
    </LinearLayout>
    


    <!-- 放RightFragment的佈局 -->
    <LinearLayout
        android:id="@+id/right"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#FFB6C1"
         >


       


    </LinearLayout>

   
</LinearLayout>

MainActivity中:

/* 本專案在在程式碼中用事務新增碎片
 * 無論左邊碎片,還是右邊碎片都是用事務,並且在activity類中新增的
 * 碎片是3.0以後出來的,所以支援的最低版本是3.0,
 * 在主清單檔案中要改成11,低於3.0會出現異常 
 */


public class MainActivity extends Activity {

private Button leftbutton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//例項化碎片物件
LeftLeftFragment fragment = new LeftLeftFragment();
//              獲得碎片管理器
FragmentManager manager = this.getFragmentManager();
//        獲得事務
FragmentTransaction  transaction = manager.beginTransaction();

//把碎片新增到activity中,R.id.left指的是activity中佈局的id
transaction.add(R.id.left, fragment);
//提交
transaction.commit();

}
/*在activity的方法中寫點選事件,出現右邊介面
 *  在activity中用左邊的碎片,開啟右邊的碎片
 *  也可以在左邊碎片的類中開啟右邊碎片參考Android_wl_fragment_003
 */

@Override
protected void onResume() {
super.onResume();
//把碎片加到activity中後碎片中的控制元件也屬於activity
//在activity中找到左邊碎片的按鈕
this.leftbutton=(Button) findViewById(R.id.leftbutton1);
this.leftbutton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
//例項化右邊的碎片物件
RightFragment fragment = new RightFragment();
FragmentManager manager = MainActivity.this.getFragmentManager();
FragmentTransactiontransaction=manager.beginTransaction();
//把碎片新增到碎片中
transaction.add(R.id.right, fragment);
transaction.commit();







}
});







}









}//class

LeftLeftFragment

public class LeftLeftFragment extends Fragment {
//在碎片中至少要重寫這些方法


@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//       用佈局填充器把佈局轉換成一個view物件,並返回
//只有用三個引數才能把佈局填滿
View view = inflater.inflate(R.layout.fragment_left, container, false);

return view;
}


@Override
public void onPause() {

super.onPause();
}






}

RightFragment

public class RightFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//   用佈局填充器把佈局轉換成一個view物件,並返回
//只有用三個引數才能把佈局填滿
View view = inflater.inflate(R.layout.fragment_right, container, false);
Button button=(Button) view.findViewById(R.id.rightbutton1);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

Toast.makeText(getActivity(), "右邊的碎片被點選了",5).show();

}
});

return view;
}


@Override
public void onPause() {

super.onPause();
}



}

如果沒明白下載我的例子

activity和fragment之間的資料傳遞