0

我是 android 的菜鸟,我有一个 Map Activity,它也使用 OverlayItems。在我的覆盖类的 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 设置适当的上下文?任何帮助是极大的赞赏。

4

3 回答 3

6

您可以像这样在 MapActivity 类中创建方法来获取上下文...

编辑: 采取一些像这样的静态变量......

public static Context mContext;

在 Activity 的 onCreate() 方法中为其分配基本上下文...

mContext = getBaseContext();

& 返回 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);
于 2012-09-07T14:15:52.900 回答
1

在开始活动之前尝试这个设置这个标志:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

希望它会奏效。

于 2012-09-07T14:20:50.327 回答
0

您可以将活动(地图活动)的上下文传递给您的类,然后使用它。

于 2012-09-07T14:03:32.573 回答