Android 如何从SurfaceView调用活动中的包私有方法?

Android 如何从SurfaceView调用活动中的包私有方法?,android,methods,android-activity,surfaceview,package-private,Android,Methods,Android Activity,Surfaceview,Package Private,我的Activity类中有一个非静态的包私有方法,我想在SurfaceView中调用它,例如:surfaceChanged()或surfaceDestroyed() 有更好的方法吗?我在同一个活动中也有一个toggleFlash()方法,因此我可以通过键侦听器在活动中切换flash。要回答您的评论-是的,您可以将活动传递到构造函数中以代替上下文: SurfaceView view = new SurfaceView(this); 然后,只要您确定上下文是活动,就可以将其强制转换为活动,以调用该

我的Activity类中有一个非静态的包私有方法,我想在SurfaceView中调用它,例如:surfaceChanged()或surfaceDestroyed()


有更好的方法吗?我在同一个活动中也有一个toggleFlash()方法,因此我可以通过键侦听器在活动中切换flash。

要回答您的评论-是的,您可以将
活动
传递到构造函数中以代替
上下文

SurfaceView view = new SurfaceView(this);
然后,只要您确定
上下文
活动
,就可以将其强制转换为
活动
,以调用该方法:

//call inside the view
((MyActivity) getContext()).methodToCall(); 
其他选项包括提供对
活动的静态引用
,或通过弱引用静态访问活动,例如:

public static WeakReference<MyActitivity> getActivity(){
    return new WeakReference<MyActivity>(self);// self is a static instance of MyActivity
}

你问的问题非常不清楚。你说的是
SurfaceView
,但你的代码中没有提到一个。请更具体一些。添加了SurfaceView类,我正试图从中调用活动中的方法。是否可以在重载构造函数中作为参数传递活动?我要问的是,从SurfaceView类调用Activity类中的方法的最佳方式是什么。很抱歉造成混淆:)
public static WeakReference<MyActitivity> getActivity(){
    return new WeakReference<MyActivity>(self);// self is a static instance of MyActivity
}
private static MyActivity self;

public MyActivity()
{
    super();
    self = this;
}