在Fragment的onAttach(活动)中存储活动

时间:2015-07-29 11:01:29

标签: java android android-fragments

我想在片段中调用Activity的一些功能。为方便起见,我计划将 ArrayList<Integer> xP=new ArrayList<>(); ArrayList<Integer> yP=new ArrayList<>(); for(int i=0;i<maxX;i++) { int y =some value; invalidate(); xP.add(i); yP.add(y); canvas.drawPoint(xP.get(j), -yP.get(j), paint); } } 中传递的活动存储为Fragment类成员。

我知道onAttach(Activity activity)也可以做同样的工作。我是Android新手,想知道这是不是很糟糕的做法。一些代码喜欢:

getActivity()

请告知我是否应该这样做。请告诉我这种方法的缺点。

1 个答案:

答案 0 :(得分:3)

正如您所提到的,由于getActivity()可以做同样的工作,我认为将MyActivity存储为Fragment的私有成员并不是一个好习惯。

有一些原因:

  1. 片段旨在制作灵活的用户界面,并可在其间进行分享 不同的活动。硬编码活动类会伤害到 可重用性。

  2. 如果您想稍后调用某些活动功能,可以定义包含所有必要功能的接口MyInterface。然后 make MyActivity实现MyInterface并存储MyInterface 作为片段成员,就像Android教程一样: http://developer.android.com/guide/components/fragments.html

  3. 更重要的是,Android的片段实现包含FragmentActivity 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