Java Android-检查某些值不会

Java Android-检查某些值不会,java,android,Java,Android,我正在进行Android计费,并试图将onPurchaseStateChange方法设置为正确,但它似乎不起作用 @Override public void onPurchaseStateChange(PurchaseState purchaseState, String itemId, int quantity, long purchaseTime, String developerPayload) { if (purchase

我正在进行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的东西吗


谢谢

PurchaseState不是像
int
long
float
等那样的原始数据类型,因此您应该使用:

purchaseState.equals(PurchaseState.PURCHASED)
而不是
==
,就像您使用字符串一样:

string1.equals(string2) // Results you expect
不一样

string1 == string2 // Don't do this...

谢谢,但在我的例子中,purchaseState==purchaseState.PURCHASED被证明是正确的,接下来的代码行似乎就是问题所在。嗯,为了确定您是否在调试器中验证了
itemId
是“3”或“4”(而不是
purchaseId
)是的,代码进入了第一个if语句。它实际上不是来自调试器-它来自一个实时应用程序,我让它发送电子邮件给我,如果它进入if语句,它会这样做,并且它报告的值与我预期的值相同。我承认我没有在应用程序计费中使用,但ExtraHelpActivity是活动活动(在前台)?好问题。ExtraHelpActivity是当前的活动,但是,我们正在讨论的代码中的方法位于内部类中。那会有区别吗?我应该使用类似于“this”的东西,还是以另一种方式获取上下文?谢谢