【问题标题】:How to call a method inside a method, on click of a button? (Android Java)如何在单击按钮时调用方法内的方法? (安卓Java)
【发布时间】:2016-12-05 23:14:59
【问题描述】:

我创建了一个这样的方法,它包含更多方法。但是,我不知道我是否需要顶级方法 - appNextCallAd()。我想澄清一下单击按钮时调用adLoaded() 方法的最佳做法是什么。我应该把它变成一堂课吗?如果是,如何?如果我必须从多个活动中致电adLoaded(),最好的方法是什么?谢谢。

public void appNextCallAd() {
    // Get callback for ad loaded
    interstitial_Ad.setOnAdLoadedCallback(new OnAdLoaded() {
        @Override
        public void adLoaded() {
            interstitial_Ad.showAd();
        }
    });
    // Get callback for ad opened
    interstitial_Ad.setOnAdOpenedCallback(new OnAdOpened() {
        @Override
        public void adOpened() {

        }
    });
    // Get callback for ad clicked
    interstitial_Ad.setOnAdClickedCallback(new OnAdClicked() {
        @Override
        public void adClicked() {

        }
    });
    // Get callback for ad closed
    interstitial_Ad.setOnAdClosedCallback(new OnAdClosed() {
        @Override
        public void onAdClosed() {

        }
    });
    // Get callback for ad error
    interstitial_Ad.setOnAdErrorCallback(new OnAdError() {
        @Override
        public void adError(String error) {
            switch (error) {
                case AppnextError.NO_ADS:
                    Log.v("appnext", "no ads");
                    break;
                case AppnextError.CONNECTION_ERROR:
                    Log.v("appnext", "connection problem");
                    break;
                default:
                    Log.v("appnext", "other error");
            }
        }
    });
}

这里是按钮点击事件;

private OnClickListener cancelBtn = new OnClickListener() {
        @Override
        public void onClick(View V) {
            try {
                InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            } catch (NullPointerException ex) {
                Log.e("TEST2", ex.toString());
            }
           //How to call adLoaded() here?!
        }
    };

【问题讨论】:

  • 你不能只在按钮的 onClick 方法中调用 interstitial_Ad.setOnAdOpenedCallback(new OnAdOpened() {...?

标签: java android class methods admob


【解决方案1】:

当你调用方法设置回调时,只需使用“this”并实现接口即可。

您的课程将类似于:

class yourclass implements OnAdLoaded {
    public void appNextCallAd() {
    // Get callback for ad loaded
        interstitial_Ad.setOnAdLoadedCallback(this);
        ...
    }

    ...

    @Override
    public void adLoaded() {
        ... do your stuff...
    }

然后您将能够从 onClick 调用方法 adLoaded。我建议这样做:

button.setOnClickListener(this);
...
@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.YOURBUTTONID:
            adLoaded();
        break;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2015-07-20
    • 2018-12-07
    相关资源
    最近更新 更多