Это то же самое, что и выбранный ответ, за исключением того, что я НЕ использовал библиотеки поддержки.
Есть две вкладки A и B.
Вкладка A содержит яблоки и абрикосы
Вкладка B содержит бананы и ягоды
Я использовал FrameLayout в качестве контейнера для хранения этих детей
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/container_widgets"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
MultiFragsInTabsJelly.java - обрабатывает операции присоединения и отсоединения.
import java.util.ArrayList;
import java.util.Iterator;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
import android.os.Bundle;
import android.util.Log;
public class MultiFragsInTabsJelly extends Activity {
public static String TAG = "EPE";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setup action bar for tabs
setContentView(R.layout.main_layout_jelly);
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setTitle("A and B");
Tab tabA = actionBar
.newTab()
.setText("A");
tabA.setTabListener(new TabAListener(this));
actionBar.addTab(tabA);
Tab tabB = actionBar
.newTab()
.setText("B");
tabB.setTabListener(new TabBListener(this));
actionBar.addTab(tabB);
}
public static class TabAListener implements ActionBar.TabListener {
// FIXME: is this really needed?
private static final String appleTag = "apple";
private static final String apricotTag = "apricot";
private final Activity mActivity;
private ArrayList<Fragment> fragList;
public TabAListener(Activity activity) {
mActivity = activity;
fragList = null;
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// Reselected don't do anything
Log.d(TAG, "Tab A: on Tab reselected");
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Log.d(TAG, "Tab A: on Tab Selected");
// attach all the fragments
if(fragList == null) {
fragList = new ArrayList<Fragment>();
RecordingFragment appleFrag = new RecordingFragment();
ApricotFragment apricotFrag = new ApricotFragment();
ft.add(R.id.container_widgets, appleFrag, appleTag);
ft.add(R.id.container_widgets, apricotFrag, apricotTag);
fragList.add(appleFrag);
fragList.add(apricotFrag);
Log.d(TAG, "Tab A: Added fragments to the ArrayList");
} else {
Iterator iter = fragList.iterator();
while (iter.hasNext())
{
Log.d(TAG, "Tab A: Attaching fragments");
ft.attach((Fragment) iter.next());
}
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
Log.d(TAG, "Tab A: on Tab Unselected");
if(fragList != null)
{
Iterator iter = fragList.iterator();
while (iter.hasNext())
{
Log.d(TAG, "Tab A: Fragments detached");
ft.detach((Fragment) iter.next());
}
}
}
}
public static class TabBListener implements ActionBar.TabListener {
// FIXME: is this really needed?
private static final String bananaTag = "banana";
private static final String berryTag = "berry";
private final Activity mActivity;
private ArrayList<Fragment> fragList;
public TabBListener(Activity activity) {
mActivity = activity;
fragList = null;
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// Reselected don't do anything
Log.d(TAG, "Tab B: on Tab reselected");
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Log.d(TAG, "Tab B: on Tab Selected");
// attach all the fragments
if (fragList == null) {
fragList = new ArrayList<Fragment>();
BananaFragment bananaFrag = new BananaFragment();
BerryFragment berryFrag = new BerryFragment();
ft.add(R.id.container_widgets, bananaFrag, bananaTag);
ft.add(R.id.container_widgets, berryFrag, berryTag);
fragList.add(bananaFrag);
fragList.add(berryFrag);
Log.d(TAG, "Tab B: Added fragments to the ArrayList");
} else {
Iterator iter = fragList.iterator();
while (iter.hasNext()) {
Log.d(TAG, "Tab B: Attaching fragments");
ft.attach((Fragment) iter.next());
}
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
Log.d(TAG, "Tab B: on Tab Unselected");
if (fragList != null) {
Iterator iter = fragList.iterator();
while (iter.hasNext()) {
Log.d(TAG, "Tab B: Fragments detached");
ft.detach((Fragment) iter.next());
}
}
}
}
}
Здесь у нас есть (пустое) тело каждого фрагмента.Я показал только один ApricotFragment
apricot_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="200dip"
android:layout_height="wrap_content"
android:padding="6dip"
android:text="Apricot" />
</RelativeLayout>
ApricotFragment.java
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class ApricotFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.apricot_fragment, container, false);
}
}
У меня вам удалось реализовать это, дайте себепохлопайте по ягодицам и возьмите булочки с корицей с кофе и побалуйте себя прекрасными фотографиями кошек