[英]Android - How to access a getter method in parent Activity from Fragment
[英]Android - How to access method in fragment from child SurfaceView?
我有一个SurfaceView作为片段的视图,我想从SurfaceView中的片段访问变量diffRadius。 我将如何访问片段中的get函数。
片段代码
public class AsteroidsFragment extends Fragment {
private AsteroidsView asteroidsView;
public int diffRadius;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fragment_game, container, false);
GameActivity activity = (GameActivity) getActivity();
diffRadius = activity.getDiffRadius();
asteroidsView = (AsteroidsView) view.findViewById(R.id.asteroidsView);
return view;
}
public int getDiffRadius()
{
return diffRadius;
}
SurfaceView代码
public class AsteroidsView extends SurfaceView implements SurfaceHolder.Callback
{
public AsteroidsView(Context context, AttributeSet attrs)
{
super(context, attrs);
activity = (Activity) context;
getHolder().addCallback(this);
//Set diffRadius to ParentFragment.getDiffRadius()
asteroidPaint = new Paint();
backgroundPaint = new Paint();
}
让我知道您是否需要更多代码。
您不希望SurfaceView对片段有严格的依赖性,但可以通过干扰进行通信
在界面上
public interface RadiusProvider {
int getDiffRadius();
}
在片段上
public class AsteroidsFragment extends Fragment implements RadiusProvider {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
asteroidsView = (AsteroidsView) view.findViewById(R.id.asteroidsView);
asteroidsView.setRadiusProvider(this);
return view;
}
@Override
public int getDiffRadius() {
return diffRadius;
}
在SurfaceView上
public class AsteroidsView extends SurfaceView implements SurfaceHolder.Callback {
....
public void setRadiusProvider(RadiusProvider radiusProvider) {
this.radiusProvider = radiusProvider;
}
}
这样,SurfaceView知道如何获取半径,但对片段一无所知,该片段可以交换为实现RadiusProvider的任何其他对象,而SurfaceView则不在乎。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.