1

私は新しいアプリケーションの作業を開始しましたFragmentが、電話とタブレットの両方の設計を行う 1 つのアプリを構築できるように、v13 サポート パッケージを介して s を使用してこのアプリケーションを開始することにしました。

XML ファイル内から AdMob 広告を作成すると、Fragment 内で 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 は Fragment ではなく Activity を想定しているので、これは理にかなっています。そのため、Fragment の代わりに FragmentActivity を拡張するクラスを作成してみましたが、その特定の問題は解決しました。ただし、実行時にフラグメント展開の問題が発生しましたが、これは以前に解決したことがありますが、非アクティビティ コード セットで FragmentActivity を使用することは想定されていないため、ここでは解決できません。

4

1 に答える 1

4

Fragment 内に広告を挿入しようとして、すべてが間違っていたことに気付きました。代わりに、クラスに FragmentActivity を拡張させてから、レイアウトを RelativeLayout にし、新しい RelativeLayout を下部に正しい重力で挿入して固定しました。その後、フラグメントは 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 に答える