Использование AdMob из фрагмента?

1

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

У меня есть объявления AdMob, работающие из фрагмента, если я создаю их из XML файла, однако, если я попытаюсь создать их с помощью кода, у меня возникают проблемы.

public class Fragment_Admob extends Fragment implements AdListener 
{

    private static final String LOG_TAG = "Fragment_Admob";

    private AdView adView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {

        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.admob_view, container, false);

        // Create an ad.
        adView = new AdView(this, AdSize.BANNER, "My_AdMob_Code");

        ...
    }

    ...
}

Eclipse говорит мне:

Конструктор AdView (Fragment_Admob, AdSize, String) не определен

поэтому я был уверен, что имеет смысл, поскольку AdView ожидает активность, а не фрагмент. Поэтому я попытался сделать класс расширенным FragmentActivity вместо Fragment и решить эту конкретную проблему. Однако теперь у меня есть проблемы с расширением фрагмента во время выполнения, с которыми я работал раньше, но я не могу разрешить здесь, потому что я действительно не думаю, что я должен использовать FragmentActivity в неактивном наборе кода.

Теги:
android-fragments
admob

1 ответ

4
Лучший ответ

Я понял, что все это неправильно, пытаясь разместить объявление внутри фрагмента. Вместо этого я сделал свой класс расширением FragmentActivity, а затем сделал мой макет RelativeLayout и ввел новый RelativeLayout в нижней части с правильной гравитацией, чтобы заставить его придерживаться. Фрагменты затем находятся внутри RelativeLayout и получают размер соответственно.

public class MyClass extends FragmentActivity implements AdListener 
{
    // Create an ad.
    adView = new AdView(this, AdSize.SMART_BANNER, "MY_ID");
    // Set the AdListener.
    adView.setAdListener(this);
    // Add the AdView to the view hierarchy. The view will have no size until the ad is loaded.
    RelativeLayout layout = (RelativeLayout) findViewById(R.id.home_layout);
    RelativeLayout.LayoutParams adsParams =new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    adsParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    layout.addView(adView,adsParams);
    AdRequest adRequest = new AdRequest();
    adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
    // Start loading the ad in the background.
    adView.loadAd(adRequest);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню