2012-04-10 16 views
0

の使用は、アプリ内課金で、ここに列挙型を使用することは非常に奇妙であるように思わ私にアンドロイド - の例符号化において列挙型

public enum ResponseCode { 
    RESULT_OK, 
    RESULT_USER_CANCELED, 
    RESULT_SERVICE_UNAVAILABLE, 
    RESULT_BILLING_UNAVAILABLE, 
    RESULT_ITEM_UNAVAILABLE, 
    RESULT_DEVELOPER_ERROR, 
    RESULT_ERROR; 

    // Converts from an ordinal value to the ResponseCode 
    public static ResponseCode valueOf(int index) { 
     ResponseCode[] values = ResponseCode.values(); 
     if (index < 0 || index >= values.length) { 
      return RESULT_ERROR; 
     } 
     return values[index]; 
    } 
} 

int responseCode = response.getInt(Consts.BILLING_RESPONSE_RESPONSE_CODE); 
boolean billingSupported = (responseCode == ResponseCode.RESULT_OK.ordinal()); 

を使用しています。列挙型がいくつかの異なる順序を使用する場合、すべてが失敗し、列挙型は特定の順序値に頼ってはいけないと考えました。なぜこのように行われ、戻りコードがゼロであるかどうかだけではありませんか?

Androidのドキュメントでは、たとえば、3の戻りコードがRESULT_SERVICE_UNAVAILABLEであると指定されています。私はサンプルコードからこれを推測することができます。

おかげで、A.

答えて

0

実際のJSON responseCodeはintですので、あなたはJavaでそれを使用する列挙型に変換する必要があります。有限の応答コードがあることを示すために、列挙型を使用します。もちろん、それはfinal static intの束だったかもしれませんが、それは読みにくいです。あなたが引用されているコードは、おそらくより良い列挙型を使用する正当化され、このように書かれている可能性があります:ドキュメントについては

ResponseCode responseCode = ResponseCode.valueOf(response.getInt(Consts.BILLING_RESPONSE_RESPONSE_CODE)); 
boolean billingSupported = (responseCode == ResponseCode.RESULT_OK); 

を、それが標準的なJavaの動作です:あなたが指定していない場合、列挙型は0からスタート明示的な値。 Cf。 http://docs.oracle.com/javase/6/docs/api/java/lang/Enum.html#ordinal%28%29

ここには、IAB請求応答コードなどが記載されています。http://developer.android.com/guide/market/billing/billing_reference.html

関連する問題