Aktionsleiste mit Fragment-Registerkarten und AdMob

Ich habe eine App, die die ActionBar mit Registerkarten in Kombination mit Fragmenten verwendet. Jetzt möchte ich den Bildschirm oben in den normalen Bildschirm und unten in eine kleine Leiste für die Anzeigen unterteilen:
Links ist der normale Bildschirm, die Registerkarten und ihre Fragmente nehmen den gesamten Bildschirm ein. Was ich will, ist die Situation auf der rechten Seite. Die Tabs und Fragmente nehmen den roten Teil ein, der grüne Teil ist für Werbung. Damit der rote Teil Platz für die Anzeigen schafft, möchte ich die Anzeigen nicht überlagern.

Da die Aktivität, mit der die Aktionsleiste und die Registerkarten eingerichtet werden, kein Layout hat, kann ich die AdView nicht hinzufügen.

Wie kann ich das machen?

Bearbeiten
So habe ich meine App implementiert. In der Aktionsleiste mit Registerkarten werden die Fragmente angezeigt, sodass in der Hauptaktivität keine XML-Layoutdatei verwendet wird.

Mein Code:TestActivity.java

public class TestActivity extends SherlockFragmentActivity {
    private ActionBar actionBar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupTabs(savedInstanceState);

        initAds();
    }

    private void setupTabs(Bundle savedInstanceState) {
        actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        addTab1();
        addTab2();
    }

    private void addTab1() {
        Tab tab1 = actionBar.newTab();
        tab1.setTag("1");
        String tabText = "1";
        tab1.setText(tabText);
        tab1.setTabListener(new TabListener<MyFragment>(TestActivity.this, "1", MyFragment.class));

        actionBar.addTab(tab1);
    }

    private void addTab2() {
        Tab tab1 = actionBar.newTab();
        tab1.setTag("2");
        String tabText = "2";
        tab1.setText(tabText);
        tab1.setTabListener(new TabListener<MyFragment>(TestActivity.this, "2", MyFragment.class));

        actionBar.addTab(tab1);
    }

    private void initAds(){
        //Here I want to display the ad, only loading once, Just like Davek804 said
    }
}

TabListener.java

public class TabListener<T extends SherlockFragment> implements com.actionbarsherlock.app.ActionBar.TabListener {
    private final SherlockFragmentActivity mActivity;
    private final String mTag;
    private final Class<T> mClass;

    public TabListener(SherlockFragmentActivity activity, String tag, Class<T> clz) {
        mActivity = activity;
        mTag = tag;
        mClass = clz;
    }

    /* The following are each of the ActionBar.TabListener callbacks */

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        SherlockFragment preInitializedFragment = (SherlockFragment) mActivity.getSupportFragmentManager().findFragmentByTag(mTag);

        // Check if the fragment is already initialized
        if (preInitializedFragment == null) {
            // If not, instantiate and add it to the activity
            SherlockFragment mFragment = (SherlockFragment) SherlockFragment.instantiate(mActivity, mClass.getName());
            ft.add(android.R.id.content, mFragment, mTag);
        } else {
            ft.attach(preInitializedFragment);
        }
    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        SherlockFragment preInitializedFragment = (SherlockFragment) mActivity.getSupportFragmentManager().findFragmentByTag(mTag);

        if (preInitializedFragment != null) {
            // Detach the fragment, because another one is being attached
            ft.detach(preInitializedFragment);
        }
    }

    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // User selected the already selected tab. Usually do nothing.
    }
}

MyFragment.java

public class MyFragment extends SherlockFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.myfragment, container, false);
    }

}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage