动态添加f

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);

    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值