2010-07-28 3 views
4

У меня есть два вида деятельности, один из которых называется 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(); 

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

ответ

3
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

Ницца, теперь он работает так, как ожидалось! Я не понимаю, почему намерение должно быть пустым до вызова startActivity, и кажется, что это не когда я запускаю свою программу. – nip3o

0

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

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

Смежные вопросы