Android开发报错:<anonymous OnClickListener>无法转换为Context
问题解决:类型不匹配错误(无法转换为Context)
错误原因
你在button2.setOnClickListener的匿名内部类OnClickListener中调用InterstitialAd.load()时,第一个参数用了this——这里的this指向的是匿名的OnClickListener实例,而InterstitialAd.load()要求第一个参数是Context类型(需要当前Activity的上下文),所以出现了类型不匹配的错误。
修复代码
把InterstitialAd.load()里的this替换为ForexScalping.this,这样就能正确传递当前Activity的上下文:
InterstitialAd.load(ForexScalping.this,ForexScalping.this.getString(R.string.main_inter), adRequest, new InterstitialAdLoadCallback() { @Override public void onAdLoaded(@NonNull InterstitialAd interstitialAd) { mInterstitialAd = interstitialAd; mInterstitialAd.show(ForexScalping.this); } // 建议补充onAdFailedToLoad等必要回调方法,处理广告加载失败的情况 } );
额外说明
在Java的内部类(包括匿名内部类)中,直接使用this会指向内部类自己的对象;如果要引用外部类的对象,需要用外部类名.this的格式,比如这里的ForexScalping.this就代表当前的ForexScalping Activity实例,它是合法的Context实现类。
内容的提问来源于stack exchange,提问作者George Miller
相关产品推荐
相关产品推荐

