Я новичок в разработке Android, но я пытаюсь добавить admob в мое приложение, которое использует viewview (panelView - GameView).
Я пробовал следовать http://rx-games.com/admob-adverts-on-surfaceview-no-xml-tutorial/, но я должен делать что-то не так, как rl.addView(panelView); добавляет исключение nullPointerException. Любая помощь приветствуется.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//setContentView(R.layout.main);
AdView adView = new AdView(this, AdSize.BANNER, "a14ded47ad3779e");
panelView = (GameView) findViewById(R.id.gameScreen);
RelativeLayout rl = new RelativeLayout(this);
rl.addView(panelView);
rl.addView(adView);
setContentView(rl);
threadView = panelView.getThread();
}
Вы раздуваете класс GameView из макета xml и добавляете его в корневой вид, который не является тем, который определен в этом же xml. У вас есть два варианта:
Вы полностью создаете SurfaceView на Java (как в примере, который вы опубликовали)
Вы включаете AdView в макет xml (я бы предпочел этот вариант над другим)
Если вы назовете xml файл game_layout.xml
, вы используете его как:
setContentView(R.layout.game_layout.xml);
game_layout.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/lib/com.google.ads"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.google.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="@string/admob_id"
ads:adSize="BANNER"
ads:loadAdOnCreate="true"
android:layout_alignParentBotom="true"
/>
<your.package.GameView
android:id="@+id/gameScreen"
android:layout_alignParentTop="true"
android:layout_above="@id/adView"
/>
</RelativeLayout>