我想在fragment中调用Activity的一些功能。为了方便起见,我计划将 onAttach(Activity activity)
中传递的 Activity 存储为 Fragment 类成员。
我知道 getActivity()
也可以做同样的工作。我是 Android 的新手,想知道这是否是不好的做法。一些代码喜欢:
class MyFragment extends Fragment {
private MyActivity mActivity;
public void onAttach (Activity activity){
super.onAttach(activity);
mActivity = (MyActivity) activity;
}
}
如果我应该这样做,请指教。请让我知道这种方法的缺点。
最佳答案
正如您提到的,由于 getActivity()
可以完成相同的工作,我认为将 MyActivity
存储为 Fragment 的私有(private)成员并不是一个好的做法。
有一些原因:
Fragment 旨在制作灵活的 UI,并且可以在两者之间共享 不同的 Activity 。硬编码 Activity 类会损害 可重用性。
如果以后要调用一些 Activity 函数,可以定义一个包含所有必要函数的接口(interface)
MyInterface
。然后 使MyActivity
实现MyInterface
并存储MyInterface
作为 fragment 成员,就像 Android 教程一样: http://developer.android.com/guide/components/fragments.html更重要的是,Android的fragment实现包含
FragmentActivity mActivity
,所以重复的mActivity定义可能 造成潜在的问题。只需检查: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/support/v4/app/Fragment.java#Fragment
关于java - 在 Fragment 的 onAttach(Activity) 中存储 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698594/