Использование полностью пользовательских видов с admob в Android - PullRequest
1 голос
/ 21 октября 2011

У меня есть реальные проблемы с пониманием макетов.Я пытаюсь добавить admob в свое приложение, но до этого момента у меня не было причин использовать макет.Я покажу вам, что у меня есть в классе активности.

    public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    View tfview = new TFView(this);
    setContentView(tfview);}

Затем я приступлю к написанию всего моего приложения на Java без использования какого-либо XML.Как поместить и этот вид, и Admob на макет?Я попытался добавить их обоих в макет, выполнив это:

LinearLayout layout = (LinearLayout)findViewById(R.id.linearLayout);
    AdView adView = new AdView(this, AdSize.BANNER, pubID);
    layout.addView(adView);
    layout.addView(tfview);
    AdRequest request = new AdRequest();
    request.setTesting(true);
    adView.loadAd(request);   

, но я получаю какие-то ошибки исключения пустых указателей.Кто-нибудь может помочь?

Заранее спасибо -Derek

Ответы [ 3 ]

1 голос
/ 21 октября 2011

Спасибо всем вашим ответам. В конце концов я просто прочитал некоторые другие ответы на подобные вопросы и построил свой макет программно (если это слово). В общем, я сделал это:

 AdView adView = new AdView(this, AdSize.BANNER, pubID);

    FrameLayout layout = new FrameLayout(this);
    FrameLayout.LayoutParams gameParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,
            FrameLayout.LayoutParams.FILL_PARENT);
    FrameLayout.LayoutParams adsParams =new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, 
            FrameLayout.LayoutParams.WRAP_CONTENT, android.view.Gravity.BOTTOM|android.view.Gravity.CENTER_HORIZONTAL); 
    layout.addView(tfview, gameParams);
    layout.addView(adView, adsParams);
    setContentView(layout);
    AdRequest request = new AdRequest();
    request.setTesting(true);
    adView.loadAd(request);     

И это работает как шарм. Еще раз спасибо всем вам.

-Derek

0 голосов
/ 21 октября 2011

Предполагая, что ваш xml-файл main.xml в папке res/layout, затем установите представление содержимого для вашего main.xml файла.

    setContentView(R.layout.main);

Настройка contentView определяет, откуда вы извлекаете ресурсы,Ваш XML-файл выглядит хорошо из вашего комментария к ответу Куртиса, но вы должны установить XML-файл как contentView, чтобы иметь возможность ссылаться на его макеты.Вот почему вы не можете найти это представление, поэтому ваша переменная layout имеет значение null, и это в конечном итоге вызывает исключение.

0 голосов
/ 21 октября 2011

Убедитесь, что R.id.linearLayout действительно является действительным идентификатором, соответствующим представлению, к которому вы хотите добавить свой контент admob.

Если вы хотите лучше разобраться с XML-макетами (что я предлагаю вам сделать, потому что они действительно так, как вы должны делать макеты в Android), ознакомьтесь с HelloViews учебниками .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...