2014-03-31 6 views
0

나는 안드로이드 스 와이프 탭을 사용하려고합니다. 탭이 올바르게 표시됩니다. 이제 스 와이프 또는 탭을 클릭하여보기를 변경하려고하면 예외가 발생합니다. 내가 YouTube 튜토리얼처럼 똑같은 방식으로했기 때문에 내 실수를 모르겠다. 내 메인 클래스 그게 전부안드로이드 스 와이프 탭을 사용하여 치명적인 예외

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) 

:

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; 
    }  
} } 

내 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; 
} 
} 

답변

0

귀하의 onPageSelected(int pos) 방법 ActionBarnull입니다. 전에 ActionBar을 정의해야합니다. 이 같은

시도 뭔가 :

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 

    } 
}); 
관련 문제