Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取上下文以从其他类启动intent方法_Android_Android Intent_Nullpointerexception - Fatal编程技术网

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

Android 如何获取上下文以从其他类启动intent方法,android,android-intent,nullpointerexception,Android,Android Intent,Nullpointerexception,我想给另一个活动的人打电话。这个方法内部有一个意图,我确信问题在于意图中的上下文。我读了一些类似的答案,但我做不到。。。我得到一个nullpointerException 活动a 这是一种有目的的方法 public void startGreetingRecorder() { Intent recordIntent = new Intent(this, NewActivity.class); . . startActivityFor

我想给另一个活动的人打电话。这个方法内部有一个意图,我确信问题在于意图中的上下文。我读了一些类似的答案,但我做不到。。。我得到一个nullpointerException

活动a

这是一种有目的的方法

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

    }
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();

        }
        return true;
    }
这是我试图做但不工作

活动a

这是一种有目的的方法

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

    }
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();

        }
        return true;
    }
受保护的语境

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

            ActivityA.startGreetingRecorder(context);

        }
        return true;
    }

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

活动A:(接收者)


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

如果您不能从其他活动调用和活动方法,则可以使用EventBus实现活动之间的通信


尝试使用

这两种方法都不起作用吗?您也不能执行
ActivityA.startGreetingRecorder(上下文)除非方法
startGreetingRecorder
是静态的。ActivityA中的方法正在工作。问题是,如果我使用静态方法,我会得到一个错误。我在c.startActivityForResult中有这个错误:“无法解析方法'startActivityForResult'”@D.O。我添加了必需的参数,您需要设置一个常量来使用。是的,我有这个常量,但我继续使用相同的问题c.startActivityForResult:“无法解析方法‘startActivityForResult’”“我尝试这样做,但不工作……((活动)上下文)。startActivityForResult(recordIntent,MY_常量);我找到了解决方案,代码中只有一个更改,并且正在工作。公共静态无效StartGroetingRecorder(活动c).如果你能编辑…不客气。有人投票错了我的问题…我想这是一个初学者也可以做简单问题的地方。