1

我已经开始开发一个新的应用程序,我决定Fragment通过 v13 支持包使用 s 开始这个应用程序,这样我就可以构建一个同时进行手机和平板电脑设计的应用程序。

如果我从 XML 文件中创建 AdMob 广告,则我的 AdMob 广告在片段中工作,但是,如果我尝试通过代码创建它们,我会遇到问题。

public class Fragment_Admob extends Fragment implements AdListener 
{

    private static final String LOG_TAG = "Fragment_Admob";

    private AdView adView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {

        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.admob_view, container, false);

        // Create an ad.
        adView = new AdView(this, AdSize.BANNER, "My_AdMob_Code");

        ...
    }

    ...
}

日食告诉我:

构造函数 AdView(Fragment_Admob, AdSize, String) 未定义

所以我觉得这很有意义,因为 AdView 需要一个 Activity 而不是 Fragment。因此,我尝试使该类扩展 FragmentActivity 而不是 Fragment 并解决了该特定问题。但是现在我在运行时遇到了片段扩展问题,我之前已经解决过,但我无法在这里解决,因为我真的不认为我应该在非活动代码集中使用 FragmentActivity。

4

1 回答 1

4

我意识到我试图在片段中放置广告是错误的。相反,我让我的类扩展了 FragmentActivity,然后将我的布局设置为 RelativeLayout,并在底部注入了一个新的 RelativeLayout,并具有正确的重力以使其保持不变。Fragments 然后驻留在RelativeLayout 内并相应地调整大小。

public class MyClass extends FragmentActivity implements AdListener 
{
    // Create an ad.
    adView = new AdView(this, AdSize.SMART_BANNER, "MY_ID");
    // Set the AdListener.
    adView.setAdListener(this);
    // Add the AdView to the view hierarchy. The view will have no size until the ad is loaded.
    RelativeLayout layout = (RelativeLayout) findViewById(R.id.home_layout);
    RelativeLayout.LayoutParams adsParams =new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    adsParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    layout.addView(adView,adsParams);
    AdRequest adRequest = new AdRequest();
    adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
    // Start loading the ad in the background.
    adView.loadAd(adRequest);
}
于 2012-05-25T00:58:47.670 回答