有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Google Play Game Services侦听器空指针异常

我对Android还是相当陌生的,我正在尝试在我的应用程序中实现成就。我基本上想复制在Google play开发者网站here上给出的“a型数字挑战”示例应用程序中实现的成就

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

下面是我在第二个活动中的听众:

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

并包括OneTeredScore方法

@Override
public void onEnteredScore(int requestedScore) {

checkForAchievements(requestedScore);
    pushAccomplishments();  
}

我不完全确定出现错误是因为侦听器希望用户点击或执行某些操作,还是因为这两个活动之间没有正确建立“链接”

我四处寻找类似的问题,但还没有发现任何东西

如果错误明显,道歉

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


共 (1) 个答案

  1. # 1 楼答案

    你的“链接”没有建立,因此null

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

    在类型a数字挑战中遵循的接口方法对于在片段和父活动之间传递数据非常有用。这就是它在那个例子中的用途。你似乎没有使用碎片

    为了取得成就,你最好在^{上附加一个类。然后,该类可以实现Listener接口(如果该接口在那一点上有用的话)。使用一个单独的活动比要求的要重得多