代码不适用于姜饼

时间:2014-03-16 12:19:26

标签: android android-2.3-gingerbread incompatibility

此代码适用于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上运行。我应该怎么做才能使它与姜饼设备兼容?

3 个答案:

答案 0 :(得分:2)

您已使用兼容性库中的导入但ActionBar。你有两种可能性。

  1. ActionBarCompat
  2. ActionBarSherlock

答案 1 :(得分:2)

您可以使用ActionBarActivity而不是FragmentActivity。 ActionBarActivity扩展了FragmentActivity,因此您无需担心Fragment兼容性。

然后你可以使用android.support.v7.app.ActionBar。

您可以在Android开发者网站上找到更多详细信息:http://developer.android.com/training/basics/actionbar/setting-up.html

答案 2 :(得分:2)

如果您在Action Bar上阅读此文档,则表示在Android 3.0中添加了Action Bar - Honeycomb。因此,您需要使用support libraries为API 8添加操作栏。

  • 如果支持API级别低于11:

import android.support.v7.app.ActionBar

  • 如果仅支持API级别11及更高级别:

import android.app.ActionBar