在 android 中使用带有 admob 的完全自定义视图
Posted
技术标签:
【中文标题】在 android 中使用带有 admob 的完全自定义视图【英文标题】:Using completely custom views with admob in android 【发布时间】:2011-10-21 03:15:17 【问题描述】:我在理解布局时遇到了真正的问题。我正在尝试将 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);
但我收到某种空指针异常错误。有人可以帮忙吗?
提前致谢 -德里克
【问题讨论】:
能贴出空指针异常错误吗? 顺便说一句,欢迎来到 ***!如果您觉得回复有帮助,请点赞。如果您发现某个回复回答了您的问题,请接受它。 这里是空指针,shrib.com/VRCyCu5Y 编辑:第 51 行是 layout.addView(adView); 【参考方案1】:感谢您的所有回复。我最终只是阅读了对类似问题的其他一些回复,并以编程方式构建了我的布局(如果这是一个词)。所以基本上我是这样做的:
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);
它就像一个魅力。再次感谢大家。
-德里克
【讨论】:
感谢您的回答。我做了一个游戏,我永远不需要使用任何 xml 布局。我有一些自定义视图,但无法放置横幅广告。但你的答案很完美。【参考方案2】:确保 R.id.linearLayout 实际上是一个有效的 Id,它对应于您要添加 admob 内容的视图。
如果您想更好地处理 XML 布局(我建议您这样做,因为它们确实是您应该在 android 中进行布局的方式),请查看HelloViews tutorials。
【讨论】:
我新建了一个 xml 文件,并在其中添加了以下代码。 schemas.android.com/apk/res/android" android:id="@+id/layout" android:orientation="vertical" android:layout_ android:layout_> 然后我重命名为 R.id.layout 我在这里做错了吗?就像我说的,我只是不太了解布局。 没错,代码还是不行吗?另外,请参阅我编辑的回复。【参考方案3】:假设您的 xml 文件是 res/layout
文件夹中的 main.xml
,然后将内容视图设置为您的 main.xml
文件。
setContentView(R.layout.main);
设置 contentView 定义了您从哪里提取资源。从您对 Kurtis 答案的评论来看,您的 xml 文件看起来不错,但您必须将 xml 文件设置为 contentView 才能引用其布局。这就是为什么你找不到那个视图,所以你的layout
变量是空的,它最终会导致异常。
【讨论】:
是的,我这样做了,但它仍然不喜欢它。以上是关于在 android 中使用带有 admob 的完全自定义视图的主要内容,如果未能解决你的问题,请参考以下文章