我是Android的菜鸟,我有一个也使用OverlayItems的Map活动。在我的overlay类的onButtonTap方法中,我想执行startActivity,然后我可以使用intent.ACTION_CALL。
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+MapActivity.phonenumber0));
startActivity(callIntent);
在上面的代码中我被要求为startActivity(Intent)创建一个方法,我不明白。当我尝试...
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+MapActivity.phonenumber0));
MapActivity.startActivity(callIntent);
它说我不能对非静态方法的非静态引用进行静态引用。当我尝试使用对象的上下文时,即被点击的按钮,它将不允许我这样做。
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+MapActivity.phonenumber0));
ContextObj.startActivity(callIntent);
当然,将此代码块移动到主Activity需要一个静态方法,它提出了一系列问题。
如何为startActivity设置适当的上下文?非常感谢任何帮助。
答案 0 :(得分:6)
您可以在MapActivity类中创建方法,以获取上下文...
修改: 拿一些像这样的静态变量...
public static Context mContext;
在Activity的onCreate()方法中为其指定基本上下文...
mContext = getBaseContext();
&安培; return mContext ...
public static Context getContext() {
return mContext;
}
&安培;将其调用到您的非活动类以开始活动...
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
callIntent.setData(Uri.parse("tel:"+MapActivity.phonenumber0));
MapActivity.getContext().startActivity(callIntent);
答案 1 :(得分:1)
在开始活动之前尝试此设置此标志:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
希望它能奏效。
答案 2 :(得分:0)
您可以将活动的上下文(Map Activity)传递给您的类,然后使用它。