如何获取上下文从其他类启动一个intent方法

时间:2015-10-19 18:24:23

标签: android android-intent nullpointerexception

我试图从另一项活动中拨打电话。这个方法里面有一个Intent,我确定问题出在intent的上下文中。我读了一些类似的答案,但我不能这样做......我得到一个nullpointerException

ActivityA

这是有意图的方法......

public void startGreetingRecorder() {
        Intent recordIntent = new Intent(this, NewActivity.class);
        .
        .
        startActivityForResult(recordIntent,);

    }

ActivityB

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        if (itemId == R.id.menu_save) {

            ActivityA.startGreetingRecorder();

        }
        return true;
    }

这是我试图做的但是没有工作。

ActivityA

这是有意图的方法......

public void startGreetingRecorder(Context context) {
        Intent recordIntent = new Intent(context, NewActivity.class);
        .
        .
        startActivityForResult(recordIntent,);

    }

ActivityB

受保护的上下文上下文;

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        if (itemId == R.id.menu_save) {

            ActivityA.startGreetingRecorder(context);

        }
        return true;
    }

2 个答案:

答案 0 :(得分:0)

您正在静态调用该方法,因此您需要将该方法标记为静态以及发送上下文。

活动A :(接收者)

public static void startGreetingRecorder(final Activity a) {
  Intent recordIntent = new Intent(a, NewActivity.class);
        .
        .
  a.startActivityForResult(recordIntent,<SomeInteger>);

}

活动B :(来电者)

[编辑] - 添加了整数参数。这用于处理结果。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    if (itemId == R.id.menu_save) {

        ActivityA.startGreetingRecorder(this);

    }
    return true;
}

如果您实际上不需要处理结果,可以使用context.startActivity(intent)

答案 1 :(得分:0)

您不能以这种方式从其他Activity调用和调用活动方法,您可以使用EventBus实现活动之间的通信。

尝试使用EventBus