2014-05-22 40 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);