Google Play游戏服务 - 侦听器空指针异常

时间:2013-08-21 09:39:30

标签: java android google-play-games

我还是Android的新手,我正在尝试在我的应用中实现成就。我基本上想要复制在Google Play开发者网站here上提供的“Type-a-Number Challenge”示例应用中实现的成就。

我有第一个活动,包含处理成就的方法和类,第二个活动,我有变量将被转发到第一个活动进行“处理”。我复制了我认为这样做所必需的代码,但是在第二个类中调用监听器时,我总是得到一个空指针异常。

以下是我在第二项活动中的听众:

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();  
}

我不完全确定是否出现错误,因为听众期待用户点击或某些操作,或者两个活动之间没有正确建立“链接”。

我环顾四周寻找类似的问题,但还没找到任何东西。

如果错误很明显,请道歉。

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

您的“关联”未建立,因此null

如果要在Activities(而不是片段)之间传递数据,则需要使用Intent框架 - 请参阅How do I pass data between Activities in Android application?

您在“键入数字质询”中所遵循的接口方法对于在片段和父活动之间传递数据非常有用。这就是它在这个例子中的用途。您似乎没有使用碎片。

对于成就,使用附加到FirstActivity的课程可能会更好。然后该类可以实现您的Listener接口(如果该接口在该点甚至有用)。使用单独的活动比重要活动重要得多。