首页 > 解决方案 > 如何正确调用活动之间的方法?

问题描述

在 中ActivityA.java,我有从tryAgain()中调用该goToGame()方法的方法ActivityB.java

ActivityA.java

public void tryAgain(View view) {
        ActivityB activityB = new ActivityB();
        activityB.goToGame(view);
    }

我收到以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference

因为ActivityB.goToGame()其中有以下字符串:

Intent intent = new Intent(getApplicationContext(), GameActivity.class);

我认为错误是由于意图activityB.goToGame()getApplicationContext()意图的错误论点造成的。

在类似的问题中,建议的解决方案是使用static,但我面临着这个解决方案的许多其他问题。

编辑

考虑一下:

  1. 我不能goToGame()static

  2. 我不能改变这样的goToGame()论点View

  3. 我不能goToGame()退货

标签: android

解决方案


要以正确的方式从您的 ActivityB 调用方法,您可以执行以下操作

将此添加到您的 ActivityB

public static Intent goToGame(Context context) {

    //here do the things you want to

    return new Intent(context, GameActivity.class);
}

无论您想在 ActivityB 上打开 GameActivity 的任何位置,都可以使用它

startActivity(ActivityB.goToGame(this));

所以这种风格不对

ActivityB activityB = new ActivityB();
    activityB.goToGame(view);

像这样做

public void tryAgain(View view) {
    startActivity(ActivityB.goToGame(this));
}

希望能帮助到你!


推荐阅读