Код не работает на Gingerbread

Этот код работает с API 11+, но я хочу, чтобы он работал с API 8. Что мне нужно сделать, чтобы сделать его совместимым с пряничными устройствами?

Это моя 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

    }
}

Это работает с API 11+, но я хочу, чтобы он работал с API 8. Что мне нужно сделать, чтобы сделать его совместимым с пряничными устройствами?


person NaveenStuns    schedule 16.03.2014    source источник
comment
Как насчет расширения ActionBarActivity вместо FragmentActivity   -  person donfuxx    schedule 16.03.2014


Ответы (3)


вы уже используете импорт из библиотеки совместимости, но для ActionBar. Здесь у вас есть две возможности.

  1. ActionBarCompat
  2. ActionBarSherlock
person Blackbelt    schedule 16.03.2014

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

Затем вы можете использовать android.support.v7.app.ActionBar.

Дополнительную информацию можно найти на веб-сайте разработчиков Android: http://developer.android.com/training/basics/actionbar/setting-up.html

person Hbibna    schedule 16.03.2014

Если вы читаете эту документацию по панели действий , там говорится, что панель действий была добавлено в Android 3.0 — Honeycomb. Итак, вам нужно использовать библиотеки поддержки, чтобы добавить панель действий для API 8. .

  • Если поддерживаются уровни API ниже 11:

import android.support.v7.app.ActionBar

  • Если поддерживается только уровень API 11 и выше:

import android.app.ActionBar

person Anish Shah    schedule 16.03.2014