標籤:
定義
Fragment可以理解成一個迷你型的活動,同樣可以包含布局,同樣有自己的生命週期。比Activity要輕量級,在程式中做介面跳轉要比Activity快的多。
靜態添加
Fragment可以靜態或者動態添加到Activity中,其中靜態情況下,直接在layout.xml中添加fragment節點,並指定android:name屬性就可以啟動相應的fragment.
動態添加
可以在Activity中通過覆蓋onCreate()函數來動態添加Fragment
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null){ getSupportFragmentManager().beginTransaction().add(R.id.container, new MainFragment()).commit(); } }
在Fragment中可以通過添加按鈕事件接收器覆蓋當前的fragment:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View rootView = inflater.inflate(R.layout.fragment_main, container, false); rootView.findViewById(R.id.btnShowAnotherFragment).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { getFragmentManager().beginTransaction() .addToBackStack(null) .replace(R.id.container, new AnotherFragment()) .commit(); } });
注意,一個靜態添加的Fragment,通過這種動態方法進行替換會造成兩個Fragment在Framelayout中的重疊。
生命週期:
當一個Fragment被另一個fragment啟動的時候會執行oncreate, oncreateview,當返回時會onDestroy銷毀。
啟動別人的這個Fragment則只會執行onDestroyView,並不會執行onDestroy。
Android Fragment的使用