Android——Fragment(碎片)的动态加载方式....

Fragment的静态加载方式显得过于死板,而动态方式则是在程序运行过程中可以对Fragment进行操作,动态地添加碎片,add、

remove等等。

接着上一节的代码,Fragment的布局文件仍是fragment1.xml这个,先来创建Fragment类:

package com.example.fragmenttest;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MyFragment2 extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // TODO Auto-generated method stub

        View view = inflater.inflate(R.layout.fragment1, container, false);
        TextView tv=(TextView) view.findViewById(R.id.fg_tv);
        tv.setText("动态加载。。");
        return view;
    }
}

Fragment类创建好以后,要想动态加载,需要对Fragment处理事务,(增删改查),之后需要commit提交事务,如果通过back

返回上一个Fragment,需要在commit前加addToBackStack返回栈。

package com.example.fragmenttest;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class MainActivity extends Activity {
    private RadioGroup rg;

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

        rg = (RadioGroup) findViewById(R.id.main_rg);
        rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
                switch (checkedId) {
                case R.id.main_bt:
                    Intent intent=new Intent();
                    intent.setClass(MainActivity.this, MainActivity2.class);
                    startActivity(intent);
                    break;
                case R.id.main_bt1:
                    MyFragment2 fragment=new MyFragment2();
                    FragmentManager fragmentManager = getFragmentManager();
                    FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
                    beginTransaction.add(R.id.main_ll, fragment);
                    beginTransaction.addToBackStack(null);
                    beginTransaction.commit();
                    break;
                case R.id.main_bt2:

                    break;
                case R.id.main_bt3:

                    break;
                default:
                    break;
                }
            }
        });

    }


}

MyFragment2 fragment=new MyFragment2();//创建Fragment的实例

FragmentManager fragmentManager = getFragmentManager();//获得Fragment的管理者

FragmentTransaction beginTransaction = fragmentManager.beginTransaction();//开启Fragment事务

beginTransaction.add(R.id.main_ll, fragment);

main_ll是在Activity的布局文件activity_main中提前预留好的导航栏上部分视图。

<LinearLayout 
        android:id="@+id/main_ll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        ></LinearLayout>

   <RadioGroup 
       android:id="@+id/main_rg"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
      android:gravity="center_horizontal"
      android:orientation="horizontal"
      android:layout_alignParentBottom="true"
       >
       <RadioButton 
           android:id="@+id/main_bt"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:drawableTop="@drawable/ic_launcher"
           android:text="静态加载"
           android:gravity="center_horizontal"
           android:layout_weight="1"
           android:background="@drawable/gray_selector"
           android:button="@null"
           />
         <RadioButton 

开启事务后可以对Fragment进行add、remove、等操作。

需要注意一点:当按下Back返回键时会直接退出,如果想要返回上一个Fragment的状态,需要在commit之前加

addToBackStack返回栈。

在点击动态加载按钮时的效果图:

这里写图片描述

会在原来空白的视图添加Fragment的布局文件。一个textview和button。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值