从活动之外的课程中启动意图

时间:2010-07-28 15:53:41

标签: java android oop android-intent

我有两项活动,其中一项被称为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();

但是,即使没有任何参数为null(使用简单的if语句检查),intent似乎为null并且抛出NullPointerException。为什么它不起作用,我该怎么做才能解决问题? 我对Android和Java开发都很陌生,所以请尽可能地解释它。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我在我的应用程序中使用了几乎完全相同的代码,但它运行良好。

我怀疑在你没有向我们展示过的代码中还有其他的东西;我怀疑有一些剪切和粘贴问题 - 例如你在MyClass中调用startActivity()的是什么?