我是经验丰富的iOS开发者,但对Android开发者来说是新手,并在这里询问一些新手问题......
我正在制作一个应用程序,它可以自定义绘制png和动画,并且根本没有标准的UI元素,我选择沿着SurfaceView路走下去。我还处理了SurfaceView代码中所触及的所有检测。
但是我如何在SurfaceView代码中处理视图之间的导航?我如何例如导航到名为QuizActivity的活动?在“正常”视图/活动中,我这样做:
Intent intent = new Intent(getBaseContext(), QuizActivity.class);
startActivity(intent);
但我无法从SurfaceView中访问getBaseContext和startActivity,即使我在同时加载多个视图时也会这样做?
结论:如何在我的SurfaceView中手动实现此导航?
谢谢
索伦
答案 0 :(得分:2)
从您的表面视图中调用:
Intent intent = new Intent(getContext(), QuizActivity.class);
getContext().startActivity(intent)
每个视图都有对它们正在运行的上下文的引用,并且上下文总是可以启动新的活动,服务,获取资源等。
修改强>
在您的表面视图中包括:
private SurfaceCallbacks listener;
public interface SurfaceCallbacks{
public void onTouch(/* any data you want to pass to the activity*/);
}
public void registerSurfaceCallbacksListener(SurfaceCallbacks l){
listener = l;
}
// and then whenever the surface being touched and you want to call something outside of the surface you do:
if(listener!=null)
listener.onTouch(/* pass the parameters you declared on the interface */);
并且在保存曲面的活动上执行此操作:
public ActivityThatHoldsSurface extends Activity implements SurfaceCallbacks{
// that comes form the surface
@Override
onTouch(/* your parameters */){
// do the navigation stuff
}
// and immediately after you inflate or instantiate your surface you do:
mySurface.registerSurfaceCallbacksListener(ActivityThatHoldsSurface.this);
}
有意义???