当前位置: 代码迷 >> Android >> 如何获取上下文 lo 从其他类启动意图方法
  详细解决方案

如何获取上下文 lo 从其他类启动意图方法

热度:45   发布时间:2023-08-04 09:59:30.0

我正在尝试从另一个活动中调用方法。 此方法内部有一个 Intent,我确信问题出在 Intent 的上下文中。 我读了一些类似的答案,但我做不到......我得到一个 nullpointerException

活动A

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

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

    }

活动B

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

            ActivityA.startGreetingRecorder();

        }
        return true;
    }

这是我正在尝试但不工作。

活动A

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

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

    }

活动B

受保护的上下文上下文;

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

            ActivityA.startGreetingRecorder(context);

        }
        return true;
    }

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

活动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)

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

尝试使用

  相关解决方案