0

Androidの課金に取り組んでおり、onPurchaseStateChangeメソッドを正しく設定しようとしていますが、機能していないようです。

    @Override
    public void onPurchaseStateChange(PurchaseState purchaseState, String itemId,
            int quantity, long purchaseTime, String developerPayload) 
    {
        if (purchaseState == PurchaseState.PURCHASED) 
        {
            mOwnedItems.add(itemId);

            if ( itemId != null && itemId.trim().equals("3") )
            {
                  Intent myIntent = new Intent(ExtraHelpActivity.this, PsychologyActivity.class);
                  ExtraHelpActivity.this.startActivity(myIntent);
            }
            if ( itemId != null && itemId.trim().equals("4") )
            {
                  Intent myIntent = new Intent(ExtraHelpActivity.this, NumberOfBusinessesActivity.class);
                  ExtraHelpActivity.this.startActivity(myIntent);   
            }                
        }
        else 
        if (purchaseState == PurchaseState.CANCELED) 
        {  
            // purchase canceled
        } 
        else 
        if (purchaseState == PurchaseState.REFUNDED) 
        {
            // user ask for a refund
        }
        else
        {   
            if ( itemId != null && itemId.equals("3") )
            {
                  Intent myIntent = new Intent(ExtraHelpActivity.this, PsychologyActivity.class);
                  ExtraHelpActivity.this.startActivity(myIntent);
            }
            if ( itemId != null && itemId.equals("4") )
            {
                  Intent myIntent = new Intent(ExtraHelpActivity.this, NumberOfBusinessesActivity.class);
                  ExtraHelpActivity.this.startActivity(myIntent);   
            }                   
        }

したがって、purchaseIdが「4」または「3」で、purchaseState == PurchaseState.PURCHASED ....何らかの理由で、ifステートメントに含まれていないように見え、次のページに進む意図を実行しません。 ?

なぜそれが起こるのか誰かが知っていますか?とても奇妙に思えます。それはJavaのものでしょうか?

ありがとう!

4

1 に答える 1

1

PurchaseState は 、 、 などのプリミティブ データ型ではないintためlongfloat次を使用する必要があります。

purchaseState.equals(PurchaseState.PURCHASED)

の代わりに==、文字列で使用するのと同じように:

string1.equals(string2) // Results you expect

と同じではありません

string1 == string2 // Don't do this...
于 2012-08-26T22:28:35.877 に答える