Android中在代码中动态(用事物)添加Fragment

来源:互联网 发布:ip mac绑定 编辑:程序博客网 时间:2024/05/31 18:55

效果


代码结构


在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();
}



}


如果没明白下载我的例子

http://download.csdn.net/detail/zhaihaohao1/8289787

activity和fragment之间的数据传递

http://blog.csdn.net/zhaihaohao1/article/details/41843495


0 0
原创粉丝点击