2010-07-28 64 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(); 

然而,甚至认为没有一个参数为空(检查了用一个简单的if语句),intent似乎为空,并抛出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 2010-07-28 17:08:31

0

我在我的应用程序中使用几乎相同的代码和它工作得很好。

我怀疑还有别的事情发生在你没有向我们展示过的代码中;我怀疑有一些剪贴问题---例如你在MyClass上调用startActivity()什么?