Fragment的静态添加和动态添加
来源:互联网 发布:it 网络 编辑:程序博客网 时间:2024/06/06 02:23
静态添加:
activity_main(静态添加fragment时,activity_main中的fragment标签,必须加name属性(包名 + 类名))
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <fragment android:id="@+id/frg_a" android:name="com.example.staticfragment.FragmentA" android:layout_width="match_parent" android:layout_height="200dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="向FragmentA传值" android:onClick="sendData"/></LinearLayout>
MainActivity
/** * 如果activity中要使用fragment,必须使activity继承FragmentActivity * * -----------静态使用fragment步骤:---------- * 1.创建一个fragment(support.v4) * 2.重写fragment中的onCreateView()方法 * 3.创建一个layout并使用fragment加载器生成view并返回 * 4.在activity的布局文件中添加fragment标签,加入name标签(包名+类名) * */public class MainActivity extends AppCompatActivity { private FragmentA fragmentA; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //fragment管理器 FragmentManager manager = getSupportFragmentManager(); //获取FragmentA的对象 fragmentA = (FragmentA) manager.findFragmentById(R.id.frg_a); } public void sendData(View view) { fragmentA.print("哈哈"); }}
FragmentA
/** * 如果activity中要使用fragment,必须使activity继承FragmentActivity * * -----------静态使用fragment步骤:---------- * 1.创建一个fragment(support.v4) * 2.重写fragment中的onCreateView()方法 * 3.创建一个layout并使用fragment加载器生成view并返回 * 4.在activity的布局文件中添加fragment标签,加入name标签(包名+类名) * */public class MainActivity extends AppCompatActivity { private FragmentA fragmentA; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //fragment管理器 FragmentManager manager = getSupportFragmentManager(); //获取FragmentA的对象 fragmentA = (FragmentA) manager.findFragmentById(R.id.frg_a); } public void sendData(View view) { fragmentA.print("哈哈"); }}
fragment_a
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <fragment android:id="@+id/frg_a" android:name="com.example.staticfragment.FragmentA" android:layout_width="match_parent" android:layout_height="200dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="向FragmentA传值" android:onClick="sendData"/></LinearLayout>
动态添加:
activity_main
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <RelativeLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="200dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="切换Fragment" android:onClick="onClick"/></LinearLayout>
MainActivity
public class MainActivity extends AppCompatActivity { private FragmentA mFragmentA; private boolean isFragmentB = true; private FragmentB mFragmentB; private boolean isFrist = true; private RelativeLayout mFragmentContatiner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mFragmentContatiner = (RelativeLayout) findViewById(R.id.fragment_container); mFragmentA = new FragmentA(); mFragmentB = new FragmentB(); if (isFrist) { //通过开始事务来获取事务对象 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); //通过add方法将容器和fragment进行绑定 transaction.add(R.id.fragment_container, mFragmentA); //提交事务(没有调用,前面代码无效) transaction.commit(); isFrist = false; } } public void onClick(View view) { if (!isFrist) { if (isFragmentB) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.remove(mFragmentA); transaction.add(R.id.fragment_container, mFragmentB); transaction.commit(); isFragmentB = false; } else { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.remove(mFragmentB); transaction.add(R.id.fragment_container, mFragmentA); transaction.commit(); isFragmentB = true; } } }}
FragmentA
public class FragmentA extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_a, container, false); return view; } //如果需要从Activity传值到Fragment需要重写该方法 @Override public void setArguments(Bundle args) { super.setArguments(args); }}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#0f0" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="fragmentA"/></LinearLayout>
FragmentB
public class FragmentB extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_b, container, false); return view; }}
fragment_b
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#f00" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="fragmentB"/></LinearLayout>
0 0
- Fragment的静态添加和动态添加
- Fragemnt(静态添加Fragment,简单的动态添加Fragment)
- Fragment的动态添加
- 在Activity中静态、动态添加Fragment
- 动态添加Fragment的步骤
- Fragment静态添加
- 动态修改viewpager里面的fragment(添加和删除)
- Fragment动态添加内容
- 动态添加Fragment碎片
- Activity动态添加fragment
- Android 动态添加Fragment
- 动态添加Fragment
- Fragment动态添加碎片
- Activity动态添加Fragment
- Android 动态添加Fragment
- 动态添加Fragment
- 动态添加Fragment
- 动态添加 v4 fragment
- linux内存寻址解析 (一)
- 为什么 Git 比 SVN 好
- eclipse错误
- linux内存寻址解析 (二)
- ios开发简单计算器
- Fragment的静态添加和动态添加
- LeetCode刷题之旅(7)
- Git和SVN之间的五个基本区别
- 机器学习之1-概论
- ACM 搜索 hdu1175 连连看
- Android中常见的布局文件的属性
- Python list index method
- 手机项目人力投入评估
- 重载赋值运算符2