我在使用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更多
我希望有人可以帮助我解决这个问题
答案 0 :(得分:1)
在onCreate方法中,您正在引用View Pager:
mViewPager = new ViewPager (this);
不要这样做,声明名称:
scanf()
你做的方式有两个ViewPagers,一个只存在于onCreate范围内,另一个尚未初始化。