0

This code works on API 11+ but I want it to work on API 8. What should I do to make it compatible on gingerbread devices?

This is my Main_Activiy

package com.calculator.cgpa;

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.widget.TextView;

public class MainActivity extends FragmentActivity implements
ActionBar.TabListener {


    private String[] tabs = { "Sem 1", "Sem 2"};
    private ActionBar actionbar;
    private ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        mViewPager = (ViewPager) findViewById(R.id.pager);
        actionbar = getActionBar();

        TabsPagerAdapter mSectionsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager());
        mViewPager.setAdapter(mSectionsPagerAdapter);
        actionbar.setHomeButtonEnabled(false);
        actionbar.setDisplayShowTitleEnabled(false);
        actionbar.setDisplayShowHomeEnabled(false);
        actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


        for (String tab_name : tabs) {
            actionbar.addTab(actionbar.newTab().setText(tab_name)
                    .setTabListener(this));
        }


    mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            // on changing the page
            // make respected tab selected
            actionbar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });

    }





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

    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
        mViewPager.setCurrentItem(tab.getPosition());

    }

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

    }
}

This works on API 11+ but I want it to work on API 8. What should I do to make it compatible on gingerbread devices?

Naveen S
  • 53
  • 9

3 Answers3

2

you are already using the import from the compatibility library but for ActionBar. There you have two possibilities.

  1. ActionBarCompat
  2. ActionBarSherlock
Blackbelt
  • 156,034
  • 29
  • 297
  • 305
2

You can use ActionBarActivity instead of FragmentActivity. ActionBarActivity extends FragmentActivity so you needn't worry about Fragment compatibility.

Then you can use the android.support.v7.app.ActionBar.

You can find more details on the android developers website: http://developer.android.com/training/basics/actionbar/setting-up.html

Hbibna
  • 568
  • 7
  • 11
2

If you read this documentation on Action Bar , it says that Action Bar was added in Android 3.0 - Honeycomb. So, you need to use support libraries to add action bar for API 8.

  • If supporting API levels lower than 11:

import android.support.v7.app.ActionBar

  • If supporting only API level 11 and higher:

import android.app.ActionBar

Anish Shah
  • 7,669
  • 8
  • 29
  • 40