我有一个有2个活动的应用程序,我用过Kotlin。我设法实现了一个admob横幅,在主要活动上没有任何问题,现在我想要在第二个活动上使用另一个横幅,我该如何做。我到处搜索过,但是得到的解决方案是在两个活动上实现相同的横幅,但是我想要的是每个活动都有自己的横幅。请注意,我使用的不是Java的kotlin,也没有Java经验。
我的activity_main.xml看起来像这样
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1000 && resultCode == RESULT_OK) {
String filePath = data.getStringExtra(FilePickerActivity.RESULT_FILE_PATH);
try {
BufferedReader br = new BufferedReader(new FileReader(filePath));
String line;
while ((line = br.readLine()) != null) {
if (line.startsWith("h")) {
// Confusion
}
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我的MainActivity.kt看起来像这样
<com.google.android.gms.ads.AdView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/adView"
android:background="@mipmap/ic_launcher_background"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111"/>
当我对第二个活动执行相同的操作并运行应用程序时,第一个活动将运行并显示广告,现在当我继续进行下一个活动时,它会崩溃。到底是怎么做到的?
答案 0 :(得分:0)
出现以下错误的原因:
Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.poc.com.eas/com.poc.com.eas.Main2Activity}: 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.
是因为您试图在过去的活动中不再使用的同一视图上调用loadAd()
方法。因此,您需要做的是为每个活动中的横幅定义一个AdView,然后在启动Main2Activity时调用adView2.loadAd(AdRequest.Builder().build())