Можно ли отображать вкладки без использования фрагментов в Android 3.0?

Можно ли отображать вкладки без использования фрагментов в Android 3.0? Я создал панель действий с вкладками, расширяющими фрагменты. Но без использования фрагментов и расширения активности я смогу отображать вкладки. Мне нужно добиться этого. мой код тоже.

Java-код:

public class ActionbarActivity extends Activity {
    ActionBar bar;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ActionBar bar = getActionBar();

        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.Tab tabA = bar.newTab().setText("Home");
        ActionBar.Tab tabB = bar.newTab().setText("Listings");
        ActionBar.Tab tabC = bar.newTab().setText("Remote");
        Fragment fragmentA = new ATab();
        Fragment fragmentB = new BTab();
        Fragment fragmentC = new CTab();
        bar.setDisplayShowHomeEnabled(true);
        tabA.setTabListener(new MyTabsListener(fragmentA));
        tabB.setTabListener(new MyTabsListener(fragmentB));
        tabC.setTabListener(new MyTabsListener(fragmentC));
        bar.addTab(tabA);
        bar.addTab(tabB);
        bar.addTab(tabC);

    }

    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.option, menu);

        return true;
    }

    protected class MyTabsListener implements ActionBar.TabListener {
        private Fragment mfragment;

        public MyTabsListener(Fragment fragment) {
            this.mfragment = fragment;

        }


        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            ft.add(R.id.fragment_place, mfragment, null);

        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub
            ft.remove(mfragment);

        }
    }
}




public class ATab  extends Fragment 

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




public class BTab extends Fragment  

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





public class CTab extends Fragment 

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

xml.code:

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

    <LinearLayout android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/fragment_place"></LinearLayout>    



</RelativeLayout>

1 ответ

Вам не нужно использовать фрагменты для использования вкладок, и я успешно сделал это в одном из моих приложений, просто изменив содержимое на вкладке выбора.

public class Main extends Activity implements ActionBar.TabListener {
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        mDisplayMode = settings.getInt("displayMode", 0);

        ActionBar bar = getActionBar();

        bar.addTab(bar.newTab().setText("Decimal").setTabListener(this));
        bar.addTab(bar.newTab().setText("Hexadecimal").setTabListener(this));

        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        bar.selectTab(bar.getTabAt(mDisplayMode));
        // Other code
}

public void onTabSelected(Tab tab, FragmentTransaction ft) {

        mDisplayMode = tab.getPosition();

        // Do stuff based on new tab selected

    }


public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // Do Nothing

}

public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // Do nothing

}

// ..

}
Другие вопросы по тегам