将新AdMob添加到Android应用程序时出现问题

时间:2013-08-29 21:23:16

标签: android android-layout admob ads

我正在尝试将新的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());

4 个答案:

答案 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

希望这对您有所帮助:)