如何在Android中的onClick侦听器中获取类引用?

时间:2014-05-22 11:51:15

标签: android android-button

我试图在onClick侦听器中调用此方法:

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

但是因为它位于onClick侦听器中,所以对它的引用不是对类的引用,而是对onClick侦听器的引用。如果此代码在onClick侦听器中,有没有办法传递类引用?

谢谢!

3 个答案:

答案 0 :(得分:3)

如果您的包含类名为egMyClass,那么您可以使用MyClass.this:

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

答案 1 :(得分:2)

在您的活动中定义Context mContext=null;,在oncreate活动方法中将此实例设为

@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);

答案 2 :(得分: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 class

的对象