我在stackoverflow中读了一些问答,但仍然无法让它工作。 在多个活动中宣传
?与上述解决方案类似,我收到以下错误
android.content.res.Resources android.content.Context.getResources()' on a null object reference
在这一行中
AdView adView = new AdView(this);
谁能找出为什么会这样?
通用代码.java
public class CommonCode extends AppCompatActivity{
//private AdView mAdView;
public void createAdview(){
AdView adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}}
主要活动.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CommonCode cc = new CommonCode();
cc.createAdview();}}
您在将 CommonCode 定义为 Activity.Activity 上下文的CommonCode
中扩展了AppCompatActivity
,直到它开始。 您需要从 CommonCode 类中删除extnds AppCompatActivity
并在参数中传递上下文,如下所示:
public class CommonCode{
public void createAdview(Context context){
AdView adView = new AdView(context);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}
}
现在在MainActivity
中,您需要像这样调用该方法:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CommonCode cc = new CommonCode();
cc.createAdview(this);
}
}
您需要在此行中传递活动上下文
AdView adView = new AdView(this);
创建这样的公共类
public class CommonCode {
public CommonCode (){
}
public void createAdview(Context context){
AdView adView = new AdView(context);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}}
并在您的活动中像这样使用它
CommonCode cc = new CommonCode();
cc.createAdview(this);