我有一个地图视图活动,其中显示了一些OverlayItems
。例如,在overlay的onTap
方法中,我想触发一个新的activity,将此overlay照片显示为全屏。
当我在overlay类中执行此操作时:
Intent intent = new Intent();
intent.setClass(getApplicationContext, FullscreenView.class);
startActivity(intent);
。。它找不到应用程序上下文,因为我不在活动的范围内。
当我将一个方法添加到我的主活动中时,假设是startFullscreen
public static void startFullscreen() {
if (sCurrentPhoto != null) {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), FullscreenView.class);
startActivity(intent);
}
}
我不能调用getApplicationContext()
和startActivity()
,因为我处于静态上下文中。但是,我需要静态方法在覆盖类(如MainView.startFullscreen()
)中调用它。
简而言之:如何从非活动类启动活动?
发布于 2010-11-29 02:45:05
您的onTap
覆盖将接收MapView
,您可以从中获取Context
@Override
public boolean onTap(GeoPoint p, MapView mapView)
{
// ...
Intent intent = new Intent();
intent.setClass(mapView.getContext(), FullscreenView.class);
startActivity(intent);
// ...
}
发布于 2011-04-17 22:28:34
在onTap()中获得上下文后,还可以执行以下操作:
Intent myIntent = new Intent(mContext, theNewActivity.class);
mContext.startActivity(myIntent);
发布于 2011-12-29 16:59:53
我不知道这是不是很好的做法,但是casting a Context object to an Activity object compiles fine.
试试这个:((Activity) mContext).startActivity(...)
https://stackoverflow.com/questions/4298225
复制相似问题