我正在尝试将新的AdMob广告添加到我的第一个应用程序中,我设法以正确的方式安排代码,但我遇到了问题:
第一个问题是我的广告ID ca-app-pub-61413779示例出现多个错误,例如: ca 无法解析为变量, ba 无法解析变量,文字 int类型的 61413779 超出范围。
第二个问题是R.id。 mainLayout ,这是mainLayout,我不明白。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic_screen);
// Create the adView
adView = new AdView(this, AdSize.BANNER, ca-app-pub-61413779example);
// Lookup your LinearLayout assuming it's been given
// the attribute android:id="@+id/mainLayout"
LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
// Add the adView to it
layout.addView(adView);
adView.loadAd(new AdRequest());
// Initiate a generic request to load it with an ad
adView.loadAd(new AdRequest());
答案 0 :(得分:7)
我不熟悉你的admob添加方式,但我还有另一个很棒的方法,只使用xml为你的app添加admob。
清单中的第一次添加这些权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
* 第二个是最重要的
然后在application
标记
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
现在,您希望广告在您展示的每个活动中都将其添加到活动的layout.xml中
<com.google.ads.AdView
android:id="@+id/ad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="xxxxxxxxxxxx"
ads:adSize="BANNER"
ads:loadAdOnCreate="true"
android:layout_gravity="center"
android:layout_margin="10dp">
</com.google.ads.AdView>
并在顶部父布局ex中。 linearlayout你在xmlns下添加这些:android =“xxx
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
xmlns:tools="http://schemas.android.com/tools"
现在广告应该完美运作:D
更新:不要忘记下载并将 GoogleAdMobAdsSdk-6.4.1.jar 放在libs文件夹下。
答案 1 :(得分:1)
AdView构造函数需要将String作为第三个参数,因此您基本上缺少双引号:
adView = new AdView(this, AdSize.BANNER, "ca-app-pub-61413779example");
对于您的XML,请确保您拥有正确的ID。如果只有mainLayout
带下划线,则表示ID不正确。如果R
带下划线,则表示您的XML在某处出现错误,并且未生成R.java。
答案 2 :(得分:0)
由于您使用activity_basic_screen.xml设置了内容,因此必须转到该xml。
您需要显示activity_basic_screen.xml的代码,并告知您要将广告放在哪里以获取具体细节
一般情况下,在您的activity_basic_screen.xml中,您必须有一个LinearLayout或其他要显示/扩展广告的布局。对于你的截图问题/ Linearlayout中的那个,你必须有这个:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mainLayout"
>
您收到该错误,因为我认为您没有使用
的线性布局 android:id="@+id/mainLayout"
你可以用不同的名字命名
android:id="@+id/givenName"
但你必须将findViewById的java中的引用更改为“R.id.givenName”
对我来说,我通常使用艾哈迈德的建议,所以我不需要在java中编程,但我认为在java中编程更具动态性。
希望有所帮助。PS。 在您的屏幕截图中,您将覆盖您的应用名称/项目,但您显示了您的包名称。它就像是一样的东西,因为你可以使用它在谷歌播放中找到你的应用程序。
答案 3 :(得分:0)
这可能与您要查找的答案不同,但是我强烈建议您使用SMART_BANNER over BANNER。在此处查看列出标准横幅尺寸的表格:
https://developers.google.com/admob/android/banner
横幅:仅尺寸320x50 智能横幅:尺寸更改为屏幕宽度x 32 | 50 | 90
以下是有关操作方法的示例:
-布局
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_r"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.adexample">
<RelativeLayout
android:id="@+id/adView_test"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>
-活动:
public class MainActivity extends AppCompatActivity {
private AdView adView;
private AdRequest adRequest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");
admobCall();
}
// Function to Set Ads for Main Layout
private void admobCall(){
// Set the RelativeLayout id to the view
View adContainer = findViewById(R.id.adView_test);
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
//Real Admob Main Activity Banner
adView.setAdUnitId(getString(R"YOUR_ADMOB_AD_ID"));
// Test google ID for Banner
// adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
((RelativeLayout)adContainer).addView(adView);
// This Request will bulid the ADs as a Test
//adRequest = new AdRequest.Builder()
//.addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build();
// This Request Will bulid the ADs as Real
adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}
还要确保在项目级别的build.gradle中添加“ google()”,然后 此实现依赖项
implementation 'com.google.android.gms:play-services-ads:17.2.1'
检查实施说明网站,以确保您没有丢失任何东西:
https://developers.google.com/admob/android/quick-start
希望这对您有所帮助:)