Question

I try to use android swipe-tabs. The tabs are shown correctly. Now when I try to change the view by swipe or clicking on a tab I get an exception. I don't know my mistake because I did the same way like a youtube tutorial does.

03-31 13:25:06.173: E/AndroidRuntime(1941): FATAL EXCEPTION: main
03-31 13:25:06.173: E/AndroidRuntime(1941): java.lang.NullPointerException
03-31 13:25:06.173: E/AndroidRuntime(1941):     at de.basti12354.uebungen.Liegestuetzen$1.onPageSelected(Liegestuetzen.java:42)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:567)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:551)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2015)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.View.dispatchTouchEvent(View.java:7384)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2205)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1940)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1954)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1954)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2211)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1954)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.app.Activity.dispatchTouchEvent(Activity.java:2424)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.View.dispatchPointerEvent(View.java:7564)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)

03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5370)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5493)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:182)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.os.MessageQueue.nativePollOnce(Native Method)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.os.MessageQueue.next(MessageQueue.java:132)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.os.Looper.loop(Looper.java:124)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at android.app.ActivityThread.main(ActivityThread.java:5103)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at java.lang.reflect.Method.invokeNative(Native Method)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at java.lang.reflect.Method.invoke(Method.java:525)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-31 13:25:06.173: E/AndroidRuntime(1941):     at dalvik.system.NativeStart.main(Native Method)

Thats my main class:

 public class Liegestuetzen extends  FragmentActivity implements TabListener {

ActionBar actionBar;
ViewPager pager;

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


    pager = (ViewPager) findViewById(R.id.viewPager);
    pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
    pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int pos) {
            // TODO Auto-generated method stub
            actionBar.setSelectedNavigationItem(pos);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }
    });

    //actionbar

    ActionBar actionBar= getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    ActionBar.Tab tab1=actionBar.newTab();
    ActionBar.Tab tab2=actionBar.newTab();


    tab1.setText("Tab 1");
    tab2.setText("Tab 2");

    tab1.setTabListener(this);
    tab2.setTabListener(this);
    actionBar.addTab(tab1);
    actionBar.addTab(tab2);
    }

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

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

    }

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

    }



public class MyPagerAdapter extends FragmentPagerAdapter {

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int pos) {
        switch(pos) {

        case 0:         return new Liege1();
        case 1:         return new Liege2();
        //case 2:       return new ThirdFragment();

        }
        return null;
    }

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

Thats my fragment1:

public class Liege1 extends Fragment {


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.liegestuetzen, container, false);

    return rootView;
}
}
Was it helpful?

Solution

Your ActionBarin the onPageSelected(int pos) method is null. You should try to define your ActionBar before.

Try something like this:

ActionBar actionBar= getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tab1=actionBar.newTab();
ActionBar.Tab tab2=actionBar.newTab();
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

    @Override
    public void onPageSelected(int pos) {
        // TODO Auto-generated method stub
        actionBar.setSelectedNavigationItem(pos);
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }
});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top