NullObjectReference for Admob in different activities



我在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);

最新更新