我已经开始学习如何在Android Studio中编码遇到问题。我已经搜索了大约9个小时,并尝试了我对android工作室有限理解所能想到的一切。Android admob error setContentView
详细信息:从this学习教程后,我试图整合横幅广告只是为了学习如何做到这一点。我使用this教程来制作广告。我认为这个问题是因为我有setContentView函数使用我自定义的GamePanel类,因为如果我使用R.layout.activity_game(主布局)它不会给我一个错误,但我找不到解决此问题的方法。 我试图在玩家死亡时开始另一项活动,但这似乎不起作用。之后,我尝试从GamePanel更新方法中更改contentView,但所做的只是停止游戏并使其不响应输入。
错误:
06-09 12:48:22.584 6187-6187/coldwarcore.aliens E/AndroidRuntime: FATAL EXCEPTION: main
Process: coldwarcore.aliens, PID: 6187
java.lang.RuntimeException: Unable to start activity ComponentInfo{coldwarcore.aliens/coldwarcore.aliens.Game}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
at android.app.ActivityThread.access$800(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5584)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at coldwarcore.aliens.Game.onCreate(Game.java:25)
at android.app.Activity.performCreate(Activity.java:5447)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
at android.app.ActivityThread.access$800(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5584)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
源代码: 主要活动:
public class Game extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(new GamePanel(this));
//if I put the ad code here, I get the error mentioned above
}
activity_game.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="coldwarcore.aliens.Game">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id">
</com.google.android.gms.ads.AdView>
</RelativeLayout>
的GamePanel:编辑: 我用这段代码在GamePanel中创建一个广告。
mInterstitialAd = new InterstitialAd(getContext());
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(((Game)getContext()).getHASHID()) //gets device HASH ID
.build();
mInterstitialAd.loadAd(adRequest);
然后使用: 如果(mInterstitialAd.isLoaded()){ 的System.out.println( “广告显示”); mInterstitialAd.show(); } else System.out.println(“ad not loaded”); 来检查它是否被加载,但是if语句没有写入任何内容,所以isLoaded()函数一定有问题。当这不起作用时,我尝试在if之外强制使用show()方法,因为我知道广告必须在显示广告时加载,但这也不起作用。 有没有其他方法可以使这项工作?还是有什么办法从GamePanel切换到另一个活动,然后再回来?
在#onCreate()中发布代码导致错误。错误是由第25行引起的,所以发帖 –
这里是: AdView mAdView =(AdView)findViewById(R.id.adView); // line 25 AdRequest adRequest = new AdRequest.Builder()。build(); //第26行 mAdView。loadAd(AdRequest中); //第27行 – Cristiannic