我想在片段中调用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()
请告知我是否应该这样做。请告诉我这种方法的缺点。
答案 0 :(得分:3)
正如您所提到的,由于getActivity()
可以做同样的工作,我认为将MyActivity
存储为Fragment的私有成员并不是一个好习惯。
有一些原因:
片段旨在制作灵活的用户界面,并可在其间进行分享 不同的活动。硬编码活动类会伤害到 可重用性。
如果您想稍后调用某些活动功能,可以定义包含所有必要功能的接口MyInterface
。然后
make MyActivity
实现MyInterface
并存储MyInterface
作为片段成员,就像Android教程一样:
http://developer.android.com/guide/components/fragments.html
更重要的是,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