Не удается вызвать метод за пределами Java-класса - PullRequest
0 голосов
/ 31 мая 2018

У меня есть имя метода checkForUpdate() в UpdateActivity.java.Выглядит это так:

@NonNull
@SuppressWarnings("deprecation")
protected String checkForUpdate(int curVersionCode) {
  HttpClient httpclient = new DefaultHttpClient();
  ... 
}

Я пытаюсь вызвать его из другой активности.Поэтому я пытаюсь использовать такой код:

private void callFromAnotherActivity() {
  UpdateActivity updateApp = new UpdateActivity();
  String result = updateApp.checkForUpdate(...);
}

, поэтому, когда я набираю updateApp., появляется список методов UpdateActivity.java, но метода checkForUpdate() нет.Почему?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вы не должны создавать экземпляр класса деятельности.Это неверно.У действия есть пользовательский интерфейс и жизненный цикл, и действие запускается с помощью startActivity (намерение). Проверьте здесь: вызов метода в другом действии

0 голосов
/ 31 мая 2018

поэтому, когда я набираю updateApp.затем появляется список методов UpdateActivity.java, но нет метода checkForUpdate ().Почему?

Это потому, что ваш метод не является общедоступным и, вероятно, вы не импортировали UpdateActivity.

Обратите внимание, , что вы можете 't создать действие, вызвав следующее:

UpdateActivity updateApp = new UpdateActivity();

Вам нужно использовать что-то вроде этого:

// context is your activity context.
Intent updateApp = new Intent(context, UpdateActivity.class);
context.startActivity(updateApp);

Мое предложение:

Вам нужнопереместите метод checkForUpdate с UpdateActivity и сделайте его утилитарным.Таким образом, другие действия, использующие этот метод, не будут зависеть от UpdateActivity.Локализуйте метод в служебном классе примерно так:

public class UpdateUtil {

  ...

  @NonNull
  @SuppressWarnings("deprecation")
  public static String checkForUpdate(int curVersionCode) {

    HttpClient httpclient = new DefaultHttpClient();
    ... 

  }
}

, а затем используйте метод с:

UpdateUtil.checkForUpdate(1);

Если вы не можете переместить код (например, вы нене имея права собственности на код), вы можете выполнять следующие действия:

  1. Сделать checkForUpdate как статический метод
  2. С помощью EventBus указать UpdateActivity, чтобы выполнить обновление.
...