2010-07-28 67 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()什麼?