我已經開始學習如何在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