Запуск намерения из класса вне деятельности - PullRequest
4 голосов
/ 28 июля 2010

У меня есть два занятия, одно из них называется MyActivity. Я хочу, чтобы они оба могли использовать функцию, расположенную в классе, который мы можем назвать MyClass. В MyClass я пытаюсь использовать намерение для запуска действия AnotherActivity. Поскольку конструктор принимает в качестве параметра контекст, я просто попытался сохранить контекст из действия в конструкторе, а затем использовать его при попытке создать свое намерение.

class MyClass {
  private Context cxt;

  MyClass(Context cxt) {
    this.cxt = cxt;
  }

  startIntent() {
    Intent intent = new Intent(cxt, AnotherActivity.class);
    startActivity(intent); // this line throws a NullPointerException
  }
}

Код MyActivity для использования класса показан ниже:

myClassObject = new MyClass(MyActivity.this);
myClassObject.startIntent();

Однако, даже если ни один из аргументов не является нулевым (проверил это с помощью простого оператора if), intent кажется нулевым, и NullPointerException выбрасывается. Почему это не работает, и что я могу сделать, чтобы решить проблему? Я довольно новичок в разработке для Android и Java, поэтому, пожалуйста, объясните это как можно проще.

Ответы [ 2 ]

3 голосов
/ 28 июля 2010
cxt.startActivity(new Intent(cxt, AnotherActivity.class));

и чтобы убедиться, что его намерение равно NULL, а не что-то внутреннее в методе startActivity, вы можете добавить несколько проверок, т.е.

Intent intent = new Intent(cxt, AnotherActivity.class);
Log.d(toString(), "intent = " + intent.toString());
cxt.startActivity(intent);
0 голосов
/ 28 июля 2010

Я использовал почти идентичный код в своих приложениях, и он работал нормально.

Я подозреваю, что в коде происходит что-то еще, что вы нам не показали; Я подозреваю, что есть некоторые проблемы вырезания и вставки - например, что вы вызываете startActivity () в MyClass?

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