6

私は Dungeons アプリケーションの例を使用しており、その例で提供されている BillingService クラスを使用しています。

私は Java 6 を使用しており、@override は機能しますが、BillingService.java 内の次の 2 つのメソッドでコンパイル エラーが発生します。

/**
 * 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

アプリ内課金は、最初は挑戦です。秘訣は、独立したプロジェクトで開始してから、特定の機能をすべて実行することです。これについて私を信頼してください。勇気を出してすべてを一緒に行ってください。始めるのに時間をかける価値はありません。実装、理解、デバッグが容易になるように、Google がアプリの請求を全体的に改善してくれることを願っています。私はしばらく前にそれについてブログを書き、人々がダウンロードして作業を開始できるように、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 ツールを選択 --> プロジェクトのプロパティを修正

これで修正されました(Javaコンパイラの設定が原因だったと思います)。

于 2013-08-24T00:51:03.873 に答える