Fragment学习记录二 动态创建fragment
来源:互联网 发布:数组合并 js concat 编辑:程序博客网 时间:2024/06/06 10:03
动态创建Fragment
步骤:
1.获取到FragmentManager,V4包中 getSupportFragmentManager,系统中 getFragmentManager
2.开启一个事务,通过调用beginTransaction方法开启。
3.向容器内加入Fragment,一般使用add或者replace方法实现,需要传入容器的id和Fragment的实例。
4.提交事务,调用commit方法提交。
create_dynamic_activity.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="fragment1"/> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="fragment2"/> <FrameLayout android:id="@+id/fragment" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="3"> </FrameLayout></LinearLayout>
CreateDynamicActivityActivity.java
package com.mytest.fragmentall.create;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.view.View;import android.widget.FrameLayout;import com.mytest.fragmentall.R;public class CreateDynamicActivityActivity extends FragmentActivity implements View.OnClickListener { private FrameLayout fragment; FragmentManager manager ; FragmentTransaction transaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.create_dynamic_activity); findViewById(R.id.button).setOnClickListener(this); findViewById(R.id.button2).setOnClickListener(this); fragment = (FrameLayout) findViewById(R.id.fragment); manager = getSupportFragmentManager(); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button: transaction = manager.beginTransaction(); TitleFragment fragment = new TitleFragment(); transaction.add(R.id.fragment, fragment); transaction.commit(); break; case R.id.button2: transaction = manager.beginTransaction(); ContentFragment fragment2 = new ContentFragment(); transaction.add(R.id.fragment, fragment2); transaction.commit(); break; } }}
参考记录一
fragment_1.xml
TitleFragment.java
fragment_2.xml
ContentFragment.java
fragment_2.xml 简单修改
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#e6a0a0"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="fragment2" android:id="@+id/textView2" android:gravity="center" android:textSize="20sp" android:layout_gravity="center_horizontal"/></RelativeLayout>
注意事项:
......transaction 在点击事件前赋值transaction = manager.beginTransaction();......public void onClick(View view) { switch (view.getId()) { case R.id.button: TitleFragment fragment = new TitleFragment(); transaction.add(R.id.fragment, fragment); transaction.commit(); break; case R.id.button2: ContentFragment fragment2 = new ContentFragment(); transaction.add(R.id.fragment, fragment2); transaction.commit(); break; } }报异常java.lang.IllegalStateException: commit already called
原因是:
commit不能被同一个FragmentTransaction调用多次
0 0
- Fragment学习记录二 动态创建fragment
- Fragment学习记录一 静态创建fragment
- Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment
- Android 动态创建fragment
- 动态创建Fragment
- android 动态创建Fragment
- 动态创建Fragment
- 动态创建fragment
- Fragments二:创建Fragment
- Android 工作记录二 之 viewpager 动态删除fragment
- Fragment学习二
- Fragment学习(二)
- 使用Fragment创建动态UI
- 用fragment创建动态组件
- 动态创建并且实现Fragment
- tablayout结合动态创建fragment
- Android 学习笔记七:使用Fragment创建动态UI
- Fragment的创建(二)
- 使用内存映射文件在进程间共享数据
- C++ 类的继承——继承的细节
- 宝库\要出发 IOS面试试题
- Android background tint颜色渲染
- trigger练习
- Fragment学习记录二 动态创建fragment
- 清除浮动事二三
- puppet学习与精通之入门
- Android 按下home键,程序在后台运行,在launcher里面再点击icon又重新启动了
- 实现spring+mybatis+uncode dal,应用自动切换连接数据库
- <快速幂模> N^N的末尾数字
- 并发下常见的加锁及锁的PHP具体实现
- 丰厚资本杨守彬:创业就是从地狱到天堂,路过人间而已
- XXX Params.addRule(); 该方法不能用的问题