setHomeButtonEnabled(false) returns null while using it for swipe tabs

118 Views Asked by At

I am trying to develop swipe tabs in my android app. I googled it and tried to implement it by myself. Here is what I did:

MainActivity.java:

package com.example.shiza.swipetabs;

import android.app.ActionBar;

import android.app.FragmentTransaction;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Window;


public class MainActivity extends FragmentActivity implements ActionBar.TabListener{
    ActionBar bar;
    ViewPager viewPager;
    FragmentPageAdapter ft;

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

//        viewPager = new ViewPager(this);
        viewPager.setId(R.id.pager);

        setContentView(viewPager);

        ft = new FragmentPageAdapter(getSupportFragmentManager());

        viewPager.setAdapter(ft);

        bar = getActionBar();

        try {
            bar.setHomeButtonEnabled(false);
        } catch (Exception e) {
            e.printStackTrace();
        }
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

        bar.addTab(bar.newTab().setText("A").setTabListener(this));
        bar.addTab(bar.newTab().setText("B").setTabListener(this));
        bar.addTab(bar.newTab().setText("C").setTabListener(this));
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                bar.setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }
}

FragmentPageAdapter.java:

package com.example.shiza.swipetabs;

//import android.app.FragmentManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

/**
 * Created by Shiza on 11-06-2015.
 */
public class FragmentPageAdapter extends FragmentPagerAdapter{

    public FragmentPageAdapter(FragmentManager fm)
    {
        super(fm);
    }
    @Override
    public Fragment getItem(int position) {

        switch (position)
        {
            case 1:
                return new Fragment_a();

            case 2:
                return new Fragment_b();
            case 3:
                return new Fragment_c();
        }
        return null;
    }

    @Override
    public int getCount() {
        return 3;
    }
}

Everything is fine, but when I am getting following warning:

Method invocation 'bar.setHomeButtonEnabled(false)' may produce 'java.lang.NullPointerException

At runtime, I got NullPointerException at the same line.
I searched it on StackOverflow and come to know that I need to use v7.support library. I am unable to implement that. It looks like...

 bar = getActionBar();

...returns null. Apart from this I am getting a lot of deprecated methods. Please suggest me a better tutorial. I am taking help of this. I have tried all solutions on SO, but none of them work. Please help me to solve this.

1

There are 1 best solutions below

0
On

If your MainActivity extend ActionBarActivity, your getActionBar(); will be available.

I think your example is a little old. You can try this example with Android Studio