Android 中的开发需要兼容手机和平板, 两个方面. 这就引入了碎片的概念.(注意: 这里用的 Fragment 强烈建议使用 support-v4 库中的 Fragment)
碎片: 是一种可以嵌入在活动当中的 UI 片段, 它能让程序更加合理和充分的利用大屏幕的空间.
对于碎片来说我们一般用到的都是动态的添加碎片, 使碎片的作用得到了很好地利用.
如何动态的添加碎片呢?
动态添加碎片的主要有以下 5 个步骤:
1. 创建待添加的碎片实例
2. 获取 FragmentManager, 在活动中可以直接通过 getSupportFragmentManager() 方法得到
3. 开启一个事务, 通过调用 beginTransaction() 方法开启
4. 向容器中添加或替换碎片, 一般使用 replace() 方法实现, 需要传入容器的 id 和待添加的碎片实例
5. 提交事务, 调用 commit() 方法来完成
如下面一个例子:
首先需要创建碎片实例:
在 activity_main.xml 中, 创建一个 FrameLayout 控件:
- Android:id="@+id/right_layout"
- Android:layout_width="0dp"
- Android:layout_height="match_parent"
- Android:layout_weight="1"
- >
其次在 MainActivity 中代码如下:
- public class MainActivity extends AppCompatActivity {
- private Button button;
- // 动态添加碎片的步骤一共以下 5 步
- // 1. 创建待添加的碎片实例
- //2. 获取 FragmentManager, 在活动中可以直接通过 getSupportFragmentManager() 方法得到
- //3. 开启一个事务, 通过调用 beginTransaction() 方法开启
- //4. 向容器中添加或替换碎片, 一般使用 replace() 方法实现, 需要传入容器的 id 和待添加的碎片实例
- //5. 提交事务, 调用 commit() 方法来完成
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- button = (Button) findViewById(R.id.button);
- // 调用 replaceFragment 方法先将 RightFragment 这个碎片添加进去
- replaceFragment(new RightFragment());
- button.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View view) {
- switch (view.getId()){
- case R.id.button:// 当点击左边碎片的按钮时调用 replaceFragment 方法将 AnotherRightFragment 这个碎片添加进去
- replaceFragment(new AnotherRightFragment());
- break;
- default:
- break;
- }
- }
- });
- }
- private void replaceFragment(Fragment fragment) {
- FragmentManager fragmentManager = getSupportFragmentManager();
- FragmentTransaction transaction = fragmentManager.beginTransaction();
- transaction.replace(R.id.right_layout,fragment);
- // 在按下返回键的时候不是退出程序而是退到第一个碎片使用 transaction 的 addToBackStack 方法, 值一般为 null
- transaction.addToBackStack(null);
- transaction.commit();
- }
- }
来源: http://www.bubuko.com/infodetail-2997926.html