Sean's Note: Some notes for Fragment's usage

2015年7月30日 星期四

Some notes for Fragment's usage

Subclass Fragment

繼承 Fragment 時,要提供 Public empty constructor,否則會出現下列錯誤訊息:

android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment 省略: make sure class name exists, is public, and has an empty constructor that is public ...

詳見: http://blog.csdn.net/xplee0576/article/details/43057633

還有 subclass of fragment 如果是 non-static inner class,既使提供了 Public empty
constructor,仍會出現錯誤而且還會造成 Memory Leak(Implicit reference to Activity),
必須是 static class 或 non-inner class。

Fragments Communication

Fragments 的溝通可以分成下列三種情況:
  • Activity to Fragment
    1. Activity 建立 bundle 物件 並透過 Fragment.setArguments(bundle) 來傳遞;而fragment 則透過 Bundle bundle = getArguments() 來接收。
    2. 在 Fragment 中建立 public method 來讓 Activity 引用。
      EX: getSupportFragmentManager().findFragmentById(R.id.fragment).publicMethod(args)
  • Fragment to Activity
    1. 利用 interface(listener) 的方法,讓 Activity 實作 listener。
    2. 在 Activity 建立 public method 讓 fragments 引用。
  • Fragment to Fragment 
    1. 利用上述兩種方式來實現。

沒有留言:

張貼留言