2013-08-21 57 views
-1

我對Android還是比較陌生,我正試圖在我的應用程序中實現成就。我基本上想要複製在Google Play開發者網站here上給出的「Type-a-Number Challenge」示例應用中實現的成就。Google Play遊戲服務 - 偵聽器空指針異常

我有第一個活動,其中包含方法和類來處理成就,第二個活動,我有變量將被轉發到第一個活動的「處理」。我複製了我相信這樣做的代碼,但是在調用第二個類中的偵聽器時,我總是得到空指針異常。

這裏是我的第二個活動監聽器:

public interface Listener { 
    public void onEnteredScore(int score); 
} 

Listener mListener = null; 

public void setListener(Listener l) { 
    mListener = l; 
} 

當我打電話的聽衆這樣(其中mRequestedScore是不同的爲0)的空指針異常此標記:

mListener.onEnteredScore(mRequestedScore); 

第一個活動的類實現第二個活動監聽器,如下所示:

public class FirstActivity extends BaseGameActivity 
          implements SecondActivity.Listener 

幷包括onEnteredScore方法,例如

@Override 
public void onEnteredScore(int requestedScore) { 

checkForAchievements(requestedScore); 
    pushAccomplishments(); 
} 

我不能完全肯定,因爲聽者期待一個點擊或由用戶的某些行爲,或「聯動」出現錯誤沒有被正確地在兩者之間建立活動。

我四處尋找類似的問題,但還沒有找到任何東西。

道歉,如果錯誤是顯而易見的。

在此先感謝您提供的任何幫助。

+0

'mListener'爲'null'。這裏沒有神祕。 –

+0

我應該如何初始化它以便它返回到第一個活動? – PierreM

回答

0

您的「關聯」未建立,因此null

如果你想傳遞活動(不片段)之間的數據,你需要使用意向框架 - 見How do I pass data between Activities in Android application?

您在以下類型的界面方法中的多個挑戰是合格有用Fragments和父Activity之間的數據。這就是它在這個例子中被使用的原因。你似乎沒有使用片段。

對於成就,您可能更好地使用附加到您的FirstActivity的類。然後該類可以實現您的Listener接口(如果該接口在那一點上甚至是有用的)。使用單獨的活動比需要的重量要重得多。