6

我正在使用 Dungeons 应用程序示例,并且正在使用该示例中提供的 BillingService 类。

我正在使用 Java 6,@override 对我有用,但在 BillingService.java 中的这两个方法出现编译错误:

/**
 * This is called when we are connected to the MarketBillingService.
 * This runs in the main UI thread.
 */
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
    if (Consts.DEBUG) {
        Log.d(TAG, "Billing service connected");
    }
    mService = IMarketBillingService.Stub.asInterface(service);
    runPendingRequests();
}

/**
 * This is called when we are disconnected from the MarketBillingService.
 */
@Override
public void onServiceDisconnected(ComponentName name) {
    Log.w(TAG, "Billing service disconnected");
    mService = null;
}

有人能帮我理解为什么会这样吗?

谢谢!

4

6 回答 6

5

确保你的类实现了ServiceConnection接口。

于 2012-07-17T12:15:22.833 回答
4

应用内计费是一个开始的挑战。诀窍是让它在一个独立的项目中开始,然后做你所有的特定功能。相信我,勇敢地一起做这一切,不值得花时间开始。我希望谷歌在整体应用计费方面有所改进,使其易于实施、理解和调试。不久前我在博客上写过它,并创建了一个 helloworld 项目供人们下载并开始工作。我希望它也能帮助你。

使用 Eclipse 调试 Android 应用内计费

于 2012-07-17T08:04:07.670 回答
3

我认为您应该简单地从这两种方法中删除 @Override 装饰器。我正在使用 Google BillingService 类,这是我的方法:

public void onServiceConnected(ComponentName name, IBinder service)
{        
    mService = IMarketBillingService.Stub.asInterface(service);
    runPendingRequests();
}

您正在实现一个接口,而不是使用抽象方法扩展一个类。

于 2012-07-21T14:02:24.100 回答
2

您可能会尝试使用默认编译选项。

右键单击(或按住 Control 单击)项目并选择“属性”

选择“Java 编译器”

取消选中“启用项目特定设置”

Eclipse 会提示重新编译,应该没问题。

于 2013-02-25T23:24:41.480 回答
1

安装您的应用签名...所以转到 android 工具导出签名的应用程序...。现在它已签名,您可以取回查询。至少在物理设备上这是我的问题。

于 2013-01-26T08:28:27.897 回答
1

右键单击项目选择-> Android工具选择->修复项目属性

这为我修复了它(我相信这是一个 Java 编译器设置抛出它)。

于 2013-08-24T00:51:03.873 回答