Как правильно назвать метод между действиями? - PullRequest
0 голосов
/ 15 апреля 2020

В 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. I не могу изменить аргумент goToGame(), чтобы он остался View

  3. Я не могу заставить goToGame() вернуть что-либо

1 Ответ

1 голос
/ 15 апреля 2020

для правильного вызова метода из ActivityB вы можете сделать что-то вроде этого

добавить эту свою ActivityB

public static Intent goToGame(Context context) {

    //here do the things you want to

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

Где бы вы ни хотели открыть GameActivity поверх ActivityB, используйте это

startActivity(ActivityB.goToGame(this));

, поэтому этот стиль неправильный

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

сделайте это так

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

надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...