应用程序没有运行在使用ViewPager和ActionBar的姜饼和蜂窝上

时间:2014-04-28 08:02:59

标签: android android-fragments android-actionbar android-viewpager android-tabs

我创建了一个包含ViewPager和Tabs等功能的应用。它在api 19级和姜饼和蜜糖以外的其他方面都很好用。应用程序在启动时崩溃。

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;



@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class HomeActivity extends FragmentActivity implements ActionBar.TabListener 
{

    public ViewPager viewPager;
    private PageAdapter mAdapter;
    private ActionBar actionBar;

    // Tab titles
    private String[] tabs = { "Calculate EMI", "EMI Schedule"};


    String TabFragmentSchedule;

     public void setTabFragmentSchedule(String t){
      TabFragmentSchedule = t;
     }

     public String getTabFragmentSchedule(){
      return TabFragmentSchedule;
     }


    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);


        // Initilization
        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();
        mAdapter = new PageAdapter(getSupportFragmentManager());


        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));}

        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.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) {
            }
        });     

    }

    //method that is called to swipe viewpage on button click from calculation fragment
     public void switchToFragmentSchedule(){
        // viewPager.setCurrentItem(1);
         viewPager.setCurrentItem(1, false);
      }

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

    }

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

        viewPager.setCurrentItem(tab.getPosition());

    }

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


    }

}

我收到以下错误

04-28 13:30:25.425: E/AndroidRuntime(712): FATAL EXCEPTION: main
04-28 13:30:25.425: E/AndroidRuntime(712): java.lang.NoSuchMethodError: android.app.ActionBar.setHomeButtonEnabled
04-28 13:30:25.425: E/AndroidRuntime(712):  at com.initqube.cal_c.HomeActivity.onCreate(HomeActivity.java:53)
04-28 13:30:25.425: E/AndroidRuntime(712):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
04-28 13:30:25.425: E/AndroidRuntime(712):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
04-28 13:30:25.425: E/AndroidRuntime(712):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)
04-28 13:30:25.425: E/AndroidRuntime(712):  at android.app.ActivityThread.access$1500(ActivityThread.java:123)
04-28 13:30:25.425: E/AndroidRuntime(712):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993)
04-28 13:30:25.425: E/AndroidRuntime(712):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-28 13:30:25.425: E/AndroidRuntime(712):  at android.os.Looper.loop(Looper.java:126)
04-28 13:30:25.425: E/AndroidRuntime(712):  at android.app.ActivityThread.main(ActivityThread.java:3997)
04-28 13:30:25.425: E/AndroidRuntime(712):  at java.lang.reflect.Method.invokeNative(Native Method)
04-28 13:30:25.425: E/AndroidRuntime(712):  at java.lang.reflect.Method.invoke(Method.java:491)
04-28 13:30:25.425: E/AndroidRuntime(712):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
04-28 13:30:25.425: E/AndroidRuntime(712):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
04-28 13:30:25.425: E/AndroidRuntime(712):  at dalvik.system.NativeStart.main(Native Method)

请帮助

1 个答案:

答案 0 :(得分:2)

您需要使用Support v7 library在旧设备上使用ActionBar

然后,您需要使用ActionBarActivity代替FragmentActivitygetSupportActionBar而不是getActionBar