动态添加f

来源:互联网 发布:淘宝邮编怎么看 编辑:程序博客网 时间:2024/06/07 00:55

Fragment静态和动态添加的区别是一个动态添加是需要一个fragmentmanager,和静态添加一样都是首先需要一个类继承fragment,然后加载对应的子布局,区别就是静态添加是需要在XML布局中进行添加fragment,注意name属性就是该fragment,id是唯一标识,然后就可以在fragment中进行对其向布局一样操作

  1. <fragment  
  2.        android:name="com.example.myfragment.MyFragment"  
  3.        android:id="@+id/myfragment_1"  
  4.        android:layout_width="wrap_content"  
  5.        android:layout_height="wrap_content"  
  6.         />  


以上就是静态加载所用的布局,android:name属性中是MyFragment.java的全名,android:id中是Fragment的唯一标识(这个必须得加,否则报错,也可用android:tag属性来作唯一标识)。

1.创建一个类继承Fragment,复写onCreateView方法。加载对应的子布局就可以了:

public class fram_1 extends Fragment{    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)    {        View view = inflater.inflate(R.layout.layout_1, container, false);        return view;    }}

2.在MainActivity中创建待添加的fragment实例。

AnotherRightFragment fragment = new AnotherRightFragment();

3.在Activity中通过调用个体FragmentManager()方法获取到FragmentManager。注意在这里使用的fragmentmanager使用的是v4包的fragment的manager,

所谓的Fragment事务就是:对Fragment进行添加、移除、替换或执行其它动作,提交给Activity的每一个变化。这就是Fragment事务。主要有三个过程,1.通过fragment开启事件2.修改fragment3.提交事件,fragment里面放的也是视图,也是一个view;也是有生命周期的
注意在这里获取到的是v4包的fragmentmanger,所以是getsuppourtfragmentmananger();注意这里如果是在activty宿主中获取到manager是通过getsuppourtfragmentmananger(),然而如果是父fragment中嵌套fragment的话就需要用到getfragmentmanger(),来获取到的没有suppourt,getchildfragmentmanager,是获取到自己的manager对象

FragmentManager fragmentManager = getsuppourtfragmentmananger();

4.开启一个事物,通过调用beginTransaction()方法开启。

FragmentTransaction transaction = fragmentManager.beginTransaction();

5.向容器内加入Fragment,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例。

transaction.replace(R.id.right_layout,fragment);,一共有四个方法,add(),show(),hide(),replace(),还有一个Remove(),会销毁视图,在fragment中创建oncreatview(),这样就可以造成数据的丢失;如果是使用高频率的使用show或者hide,如果是你的app有大量图片用replace()方法就可以;

6.提交事务,调用commit()方法来完成。

transaction.commit();

public class PlayerActivity extends BaseActivty implements View.OnClickListener {    private Button btstart,btcutt;    private SeekBar se;    private ServiceConnection conn;    private MyService serv;    private FragmentManager manager;     ;//     private LinearLayout[] layout=new LinearLayout[4];    private int setprogress;    private RadioGroup group;    private Fragment[] fragments=new Fragment[4];    private TabLayout tabLayout;    private ViewPager viewPager;    private ArrayList<String> tabTitle;    private ArrayList<Fragment> pager_fragment;    private TextView tv;     private ListAdapter listAdapter;//    private View[] fragments=new View[4];    @Override    public void setview()    {        setContentView(R.layout.activity_player);             Log.e("msg","555555555555555555555");        conn=new ServiceConnection() {            @Override            public void onServiceConnected(ComponentName name, IBinder service) {                Log.e("msg","绑定成功"+"ComponentName"+ name+"IBinder"+ service);                MyService.demo de=(MyService.demo) service;                 serv=de.ins();                serv.progreesbar();                //能调用服务的方法说明已经拿到了服务的对象了                serv.setontimelisten(new MyService.ontimelisten() {                    @Override                    public void onProgressChange(int percent) {                        se.setProgress(percent);                    }                });                Log.e("msg11111111111","de.ins()");            }            @Override            public void onServiceDisconnected(ComponentName name) {                Log.e("msg","绑定失败"+name);            }        };        Intent ind=new Intent(this, MyService.class);        this.bindService(ind,conn,0);    }    @Override    protected void onStart() {        super.onStart();        Log.e("msg","playactivty:onStart");    }    @Override    protected void onResume() {        super.onResume();        Log.e("msg","playactivty:onResume");    }    @Override    public void initview()    {        btstart= (Button)findViewById(R.id.start);        Intent intent = getIntent();        String name =  intent.getStringExtra("name");        if(name !=null)        {            if (name.equals("张三"))            {                btstart.setBackgroundResource(R.drawable.zanting333);            }        }//        btcutt= (Button)findViewById(R.id.cutt);        se=(SeekBar) findViewById(R.id.seekBar);        tv=(TextView) findViewById(R.id.textView2);        tv.setOnClickListener(this);        btstart.setOnClickListener(this);//        btcutt.setOnClickListener(this);        tabLayout= (TabLayout) findViewById(R.id.TabLayout);        viewPager=(ViewPager) findViewById(R.id.ViewPager);        tabLayout.setupWithViewPager(viewPager);        initDate();        TableAdapter adapter=new TableAdapter(getSupportFragmentManager(),tabTitle,pager_fragment);        viewPager.setAdapter(adapter);        Log.e("msg","radio11111111");//      group.setOnCheckedChangeListener(this);        se.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {            @Override            public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser)            {                          setprogress=i;                Log.e("msg","i:setprogress");            }            @Override            public void onStartTrackingTouch(SeekBar seekBar) {            }            @Override            public void onStopTrackingTouch(SeekBar seekBar) {               serv.counrent(setprogress);            }        });    }    @Override    public void onClick(View v)    {        switch (v.getId())        {            case R.id.start:            Log.e("msg","service");            serv.startorpause();                if(serv.state()==2)                {                    btstart.setBackgroundResource(R.drawable.zanting333);                }else                {                    btstart.setBackgroundResource(R.drawable.bofang333);                }            break;            case R.id.textView2:                Intent in=new Intent(this,seviceAcitivty.class);                startActivity(in);                unbindService(conn);                Log.e("msg"," unbindService");                serv.tas();                break;        }    }    public void setpaly()    {        btstart.setBackgroundResource(R.drawable.zanting333);    }    public void initDate()    {        tabTitle=new ArrayList<String>();        tabTitle.add("歌曲");        tabTitle.add("专辑");        tabTitle.add("艺术家");        tabTitle.add("播放证");        pager_fragment=new ArrayList<Fragment>();            fram_0 fram_0=new fram_0();            pager_fragment.add(fram_0);            fram_1 fram_1=new fram_1();            pager_fragment.add(fram_1);            fram_2 fram_2=new fram_2();            pager_fragment.add(fram_2);            fram_3 fram_3=new fram_3();            pager_fragment.add(fram_3);    }    public interface retrofitinter    {        @GET("/213-4/")        Call<josntop> getResult(@Query("showapi_appid") String showapi_appid, @Query("topid") String topid, @Query("showapi_sign") String showapi_sign);    }}

原创粉丝点击