как мне программно получить доступ к основной активности из SurfaceView, чтобы удалить adView

Мое основное действие вызывает мою игру Surfaceview, устанавливая макет с добавленным рекламным и поверхностным просмотром (первоначально я вообще не использовал макет, прежде чем мне пришлось рекламировать баннер). однако я не смог получить доступ к основному действию из SurfaceView, чтобы изменить макет, чтобы он не включал рекламу после запуска игры. Я вынужден постоянно держать баннер из-за этого. попытки убить рекламу все равно оставляют пустой баннер. Кто-нибудь знает, как получить доступ к основным функциям активности из SurfaceView.

Я создал функцию removead() в основном действии, чтобы определить новое контекстное представление без adView, но не могу получить к нему доступ.

context, основное действие, передается в Surfaceview при создании. Я пробовал:

context.removead();
this.getContext().removead();
((Activity) this.getContext()).removead();
ViewGroup vg = (ViewGroup)(
this.getParent());
vg.removeView(adView);

person Androidcoder    schedule 10.09.2013    source источник


Ответы (1)


В итоге я отказался от попыток управлять adAiew непосредственно из SurfaceView, вместо этого создав обработчик в основном действии и отправляя ему сообщения из SurfaceView, созданного основным действием. Затем обработчик вызывает VISIBLE или GONE для adAiew в зависимости от отправленного сообщения.

person Androidcoder    schedule 10.09.2013
comment
Другой идеей было бы использовать реализацию шины событий. Таким образом, вы могли просто публиковать сообщения и слушать сообщения. EventBus прост в использовании и популярен, но ваше решение более или менее выполняет те же функции, что и использование BroadcastReceiver поскольку Android изначально является моделью, управляемой событиями. - person Ali; 12.09.2013