Admob 与 Surfaceview 崩溃
Admob with Surfaceview crashes
我想用 SurfaceView 添加 Admob 横幅广告,但它给出了 NullPointerException,
这是代码:
private AdView mAdView;
private LinearLayout ll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ll = new LinearLayout(this);
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder()
.build();
mAdView.loadAd(adRequest);
ll.addView(mAdView);
ll.addView(new GamePanel(this));
setContentView(ll);
}
GamePanel 是 class 扩展 SurfaceView 并实现 SurfaceHolder
错误说:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.loadAd(com.google.android.gms.ads.AdRequest)' on a null object reference
at com.example.binnat.zigzag.MainActivity.onCreate(MainActivity.java:54)
第 52 行:mAdView.loadAd(adRequest);
您的布局中还没有该视图,因此请在您的 LinerLayout 中找到 Adview
。
mAdView = (AdView) ll.findViewById(R.id.adView);
编辑:
您还可以将 setContentView
调用移动到创建 LinearLayout
之后:
ll = new LinearLayout(this);
setContentView(ll);
我想用 SurfaceView 添加 Admob 横幅广告,但它给出了 NullPointerException, 这是代码:
private AdView mAdView;
private LinearLayout ll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ll = new LinearLayout(this);
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder()
.build();
mAdView.loadAd(adRequest);
ll.addView(mAdView);
ll.addView(new GamePanel(this));
setContentView(ll);
}
GamePanel 是 class 扩展 SurfaceView 并实现 SurfaceHolder
错误说:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.loadAd(com.google.android.gms.ads.AdRequest)' on a null object reference
at com.example.binnat.zigzag.MainActivity.onCreate(MainActivity.java:54)
第 52 行:mAdView.loadAd(adRequest);
您的布局中还没有该视图,因此请在您的 LinerLayout 中找到 Adview
。
mAdView = (AdView) ll.findViewById(R.id.adView);
编辑:
您还可以将 setContentView
调用移动到创建 LinearLayout
之后:
ll = new LinearLayout(this);
setContentView(ll);