动态添加f
来源:互联网 发布:淘宝邮编怎么看 编辑:程序博客网 时间:2024/06/07 00:55
Fragment静态和动态添加的区别是一个动态添加是需要一个fragmentmanager,和静态添加一样都是首先需要一个类继承fragment,然后加载对应的子布局,区别就是静态添加是需要在XML布局中进行添加fragment,注意name属性就是该fragment,id是唯一标识,然后就可以在fragment中进行对其向布局一样操作
以上就是静态加载所用的布局,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
- 动态添加f
- F动态创建
- 动态规划 problem F
- 动态规划F
- 动态规划—Problem F
- 动态添加
- F-32后台配置添加筛选条件
- 9.1.1 添加成员到 F# 类型
- JSP添加<f:view>,页面报错
- F. Letter Grid 动态规划问题
- 数码管的动态显示0~f
- 动态规划——problem f
- Codeforces 626F Group Projects 动态规划
- jquery 添加 动态添加option
- 动态添加方法,添加协议
- f
- f
- f
- 百度指数
- (三)证明不等式|(e-(1+1/n)^n)|<3/n
- Linux彩色进度条和普通进度条
- restTemplate 传递map
- HttpWatch网页数据分析工具
- 动态添加f
- Git常用命令
- 自定义一个Java运行时注解框架
- STL容器学习总结(一)
- 熟悉的陌生人
- Android天气预报app源码
- Redis主从架构和主从从架构集群搭建详细步骤
- 常用 Java 静态代码分析工具的分析与比较
- multiDex分包时指定主dex的class列表