Android中如何動態添加碎片


Android中的開發需要兼容手機和平板,兩個方面。這就引入了碎片的概念。(注意:這里用的Fragment強烈建議使用support-v4庫中的Fragment

碎片:是一種可以嵌入在活動當中的UI片段,它能讓程序更加合理和充分的利用大屏幕的空間.

對於碎片來說我們一般用到的都是動態的添加碎片,使碎片的作用得到了很好地利用。

如何動態的添加碎片呢?

動態添加碎片的主要有以下5個步驟:

1.創建待添加的碎片實例
2.獲取FragmentManager,在活動中可以直接通過getSupportFragmentManager()方法得到
3.開啟一個事務,通過調用beginTransaction()方法開啟
4.向容器中添加或替換碎片,一般使用replace()方法實現,需要傳入容器的id和待添加的碎片實例
5.提交事務,調用commit()方法來完成

如下面一個例子:
首先需要創建碎片實例:

在activity_main.xml中,創建一個FrameLayout控件:
<FrameLayout
    android:id="@+id/right_layout"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    ></FrameLayout>

 

其次在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();
    }
}

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM