【问题标题】:Null LinearLayout?空线性布局?
【发布时间】:2014-03-16 23:13:09
【问题描述】:

我正在尝试使用 LinearLayout 在移动设备上实现广告,因为我在 Google 提供的教程中看到了它。但是我的LinearLayout一直返回null,好久没找到解决办法。

这是我的 MainActivity.java:

package com.me.mygdxgame;


import android.os.Bundle;
import android.widget.LinearLayout;
//import android.widget.RelativeLayout;

//import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
//import com.google.ads.AdSize;
//import com.google.ads.AdView;
import com.me.mygdxgame.R;

public class MainActivity extends AndroidApplication {

    AdView adView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = true;

        initialize(new MyGame(), cfg);

        adView = new AdView(this);
        adView.setAdSize(AdSize.BANNER);
        adView.setAdUnitId("XXXXConfidential Ad Unit IDXXXX");

        LinearLayout layout = (LinearLayout) findViewById(R.id.normal);
//      layout.addView(adView);
        if (layout ==null){
            System.out.println("layout doesn't work");
        }
        if (layout !=null){
            System.out.println("layout works");
        }
        if (adView == null){
            System.out.println("adView doesn't work");
        }
        if (adView != null){
            System.out.println("adView works");
        }

        AdRequest adRequest = new AdRequest.Builder()
        .addTestDevice("XXXXConfidential Test Device CodeXXXXXXX")
        .build();

        if (adRequest == null){
            System.out.println("adRequest doesn't work");
        }
        if (adRequest != null){
            System.out.println("adRequest works");
        }

        adView.loadAd(adRequest);
//      setContentView(layout);
    }

    public void onDestroy(){
        if (adView != null) {
            adView.destroy();
          }
          super.onDestroy();
    }
}

System.out.printlns 告诉我,除了layout,一切正常

这是我的 main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/normal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
</LinearLayout>

这是我的 R.java 文件中的一个 sn-p,在我的包中:

public static final class id {
    public static final int hybrid=0x7f050004;
    public static final int none=0x7f050000;
    public static final int normal=0x7f050001;
    public static final int satellite=0x7f050002;
    public static final int terrain=0x7f050003;
}
public static final class integer {
    public static final int google_play_services_version=0x7f070000;
}
public static final class layout {
    public static final int main=0x7f030000;
}

我对 XML 一点也不熟悉,所以我不知道问题出在哪里。我已经非常密切地关注了所有教程,但我的 layout 仍然返回 null。有什么帮助吗?我已经尝试解决它超过 24 小时...

【问题讨论】:

  • 一切正常。你试过清理你的项目吗?
  • 是的,我已经清理了我的项目好几次了。

标签: java android android-layout admob r.java-file


【解决方案1】:

您没有显示#initialize 的代码,但我敢打赌,您在该方法的某个地方再次调用#setContentView 并覆盖R.layout.main

这就是你找不到 R.is.normal 的原因,因为它不存在于你用 R.layout.main 替换的任何东西中。

【讨论】:

  • 感谢您的回答。我已经解决了这个问题。我现在实际上有一个新问题;我的 LinearLayout 覆盖了整个屏幕,而游戏,这就是应用程序的全部内容,它被覆盖在这个黑屏后面并且没有加载。您能否在stackoverflow.com/questions/22446713/… 上查看我的最新问题?
  • 如果您解决了问题,那么您应该将解决方案发布给其他用户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 2015-07-27
  • 1970-01-01
相关资源
最近更新 更多