android ViewPager:无法切换onClick页面

时间:2013-09-06 13:24:41

标签: android android-fragments android-viewpager

我想知道是否有人可以帮我解决这个问题。我有一个按钮设置,当它被点击时,它应该导航到另一个viewpager页面。但每次单击它时,应用程序崩溃都会在ontab at fragmenttab2类中返回错误。这是我的主要活动。

public class MainActivity extends SherlockFragmentActivity {

ViewPager viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    viewPager = (ViewPager) findViewById(R.id.pager);
    viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
    viewPager.setCurrentItem(1);
    }
}

这是包含onClick的片段:

public class FragmentTab1 extends SherlockFragment {

ViewPager viewPager;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Activity activity = getActivity();

    if (activity != null) {       
        addListenerOnButton();      
    }

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragmenttab1, container, false);  
    return view;
}

public void addListenerOnButton() {

    Button nextfrag = (Button) getView().findViewById(R.id.btn_nextfrag);
    nextfrag.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            ((ViewPager) viewPager.findViewById(R.id.pager)).setCurrentItem(1); 
        }
    });
}

}

日志:

E/AndroidRuntime java.lang.NullPointerException
E/AndroidRuntime com.test.seriessample.FragmentTab1$1.onClick(FragmentTab1.java:58)

1 个答案:

答案 0 :(得分:4)

你的viewPager可能是null。我还看到viewPager本身是一个ViewPager,在onClick中你在该ViewPager中搜索另一个 ViewPager似乎不对。

编辑:

你应该在你的活动中添加这样的东西

public ViewPager getPager() {
    return viewPager;
}

在片段的onClick中

((MainActivity) getActivity()).getPager().setCurrentItem(1);