【问题标题】:Google Play Game Services - Listener null pointer exceptionGoogle Play 游戏服务 - 侦听器空指针异常
【发布时间】:2013-08-21 09:39:30
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • mListenernull。这里没有什么神秘之处。
  • 我应该将它初始化为什么,以便它引用第一个活动?

标签: java android google-play-games


【解决方案1】:

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

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

您在 Type a Number Challenge 中遵循的 Interface 方法对于在 Fragment 和父 Activity 之间传递数据很有用。这就是该示例中的用途。您似乎没有使用 Fragments。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-02
    • 2017-03-01
    • 1970-01-01
    • 2013-07-31
    • 2017-09-27
    • 2018-05-09
    • 1970-01-01
    相关资源
    最近更新 更多