2014-05-22 41 views
1

我想打電話給一個onClick監聽器裏這種方法:如何在Android中的onClick監聽器中獲取類引用?

 mHelper.launchPurchaseFlow(this, 
       SKU_INFINITE_GAS, IabHelper.ITEM_TYPE_SUBS, 
       RC_REQUEST, mPurchaseFinishedListener, payload); 

但由於它是一個onClick監聽器裏,引用這將成爲沒有參考類,但聽者的onClick。如果此代碼位於onClick偵聽器中,是否有傳遞類引用的方法?

謝謝!

+0

嘗試使用getApplicationContext ()而不是這個 –

+0

謝謝大家。我得到了這個解決:) – Genadinik

+0

這看起來像一個類似的問題,已經發布在這裏:[http://stackoverflow.com/questions/23676634/use-variable-defined-in-one-event-in-other-event/ 23677099#23677099](http://stackoverflow.com/questions/23676634/use-variable-defined-in-one-event-in-other-event/23677099#23677099)我希望它可以幫助親切的問候 – LorToso

回答

3

如果包含的類名爲egMyClass,那麼您可以使用MyClass.this:

mHelper.launchPurchaseFlow(MyClass.this, 
       SKU_INFINITE_GAS, IabHelper.ITEM_TYPE_SUBS, 
       RC_REQUEST, mPurchaseFinishedListener, payload); 
1

可以有2案件

1)如果你的類擴展Context如。 ActivityService你可以做

mHelper.launchPurchaseFlow(getApplicationContext(),SKU_INFINITE_GAS,IabHelper.ITEM_TYPE_SUBS,RC_REQUEST,mPurchaseFinishedListener, payload); 

2)如果你的類不延長Context,那麼你需要的Context對象傳遞給類以某種方式,並呼籲

mHelper.launchPurchaseFlow(mContext.getApplicationContext(),SKU_INFINITE_GAS,IabHelper.ITEM_TYPE_SUBS,RC_REQUEST,mPurchaseFinishedListener, payload); 

其中mContextContext類的對象

1

定義您的活動,並在活動的onCreate方法Context mContext=null;使這個實例作爲

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mContext = this; 
} 

,並使用

mHelper.launchPurchaseFlow(mContext, 
        SKU_INFINITE_GAS, IabHelper.ITEM_TYPE_SUBS, 
        RC_REQUEST, mPurchaseFinishedListener, payload); 

或直接使用

mHelper.launchPurchaseFlow(youractivity.this, 
         SKU_INFINITE_GAS, IabHelper.ITEM_TYPE_SUBS, 
         RC_REQUEST, mPurchaseFinishedListener, payload);