PageViewer上的按钮可切换页面

时间:2014-03-09 14:28:10

标签: android button clicklistener

我在使用PageViewer Fragment上的Button时遇到了问题。 点击后,按钮会将第一个页面带到前面,而应用程序会崩溃。

public class Results extends FragmentActivity {
public static ViewPager viewPager=null;

@Override
protected void onCreate (Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.results);
    LayoutInflater inflater = LayoutInflater.from(this);
   List<View> pages = new ArrayList<View>();

    for(int i=1;i<=20;i++){
        if(i<10){
            View page = inflater.inflate(R.layout.test_fragment2, null);
            TextView textView = (TextView) page.findViewById(R.id.tv1);
            textView.setText("Page "+ i + " of 20");
            pages.add(page);
        }else{
            View page = inflater.inflate(R.layout.text_fragment, null);
            TextView textView = (TextView) page.findViewById(R.id.tv1);
            textView.setText("Page "+ i + " of 20");
            pages.add(page);
        }

    }
   MyPageAdapter pagerAdapter = new MyPageAdapter(pages);
    ViewPager viewPager = new ViewPager(this);
    viewPager.setAdapter(pagerAdapter);
    viewPager.setCurrentItem(0);    

    setContentView(viewPager);

}
 public void jumpPage(View v){
     viewPager.setCurrentItem(0,false);
    }


}

在我的布局XML上创建了按钮

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" 
android:background="@drawable/mh4design">

<Button
android:id="@+id/btback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@drawable/custom_button"
android:onClick="jumpPage" />

<TextView
android:id="@id/tv1"
android:layout_width="200dp"
android:layout_height="30dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:textSize="20sp" />

</RelativeLayout>

当我点击按钮

时,这就是CatLog向我展示的内容

D / AndroidRuntime(781):关闭VM W / dalvikvm(781):threadid = 1:线程退出未捕获的异常(组= 0x40a71930) E / AndroidRuntime(781):致命异常:主要 E / AndroidRuntime(781):java.lang.IllegalStateException:无法执行活动的方法 E / AndroidRuntime(781):在android.view.View $ 1.onClick(View.java:3599) E / AndroidRuntime(781):在android.view.View.performClick(View.java:4204) E / AndroidRuntime(781):在android.view.View $ PerformClick.run(View.java:17355) E / AndroidRuntime(781):在android.os.Handler.handleCallback(Handler.java:725) E / AndroidRuntime(781):在android.os.Handler.dispatchMessage(Handler.java:92) E / AndroidRuntime(781):在android.os.Looper.loop(Looper.java:137) E / AndroidRuntime(781):在android.app.ActivityThread.main(ActivityThread.java:5041) E / AndroidRuntime(781):at java.lang.reflect.Method.invokeNative(Native Method) E / AndroidRuntime(781):at java.lang.reflect.Method.invoke(Method.java:511) E / AndroidRuntime(781):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793) E / AndroidRuntime(781):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) E / AndroidRuntime(781):at dalvik.system.NativeStart.main(Native Method) E / AndroidRuntime(781):引起:java.lang.reflect.InvocationTargetException E / AndroidRuntime(781):at java.lang.reflect.Method.invokeNative(Native Method) E / AndroidRuntime(781):at java.lang.reflect.Method.invoke(Method.java:511) E / AndroidRuntime(781):在android.view.View $ 1.onClick(View.java:3594) E / AndroidRuntime(781):... 11更多 E / AndroidRuntime(781):引起:java.lang.NullPointerException E / AndroidRuntime(781):at com.CaliEng.mhsetsearcher.Results.jumpPage(Results.java:55) E / AndroidRuntime(781):... 14更多

我希望有人可以帮助我解决这个问题

1 个答案:

答案 0 :(得分:1)

在onCreate方法中,您正在引用View Pager:

mViewPager = new ViewPager (this);

不要这样做,声明名称:

scanf()

你做的方式有两个ViewPagers,一个只存在于onCreate范围内,另一个尚未初始化。