【发布时间】:2017-05-10 14:54:34
【问题描述】:
我正在尝试创建一个对话框,您可以在其中单击“下一步”按钮向右滑动到下一个屏幕。我正在使用 ViewPager 和适配器:
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.voicedialog);
dialog.setCanceledOnTouchOutside(false);
MyPageAdapter adapter = new MyPageAdapter();
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
pager.setAdapter(adapter);
但是,我得到一个 NullPointerException 说 pager 为空。为什么会这样?这是页面适配器类:
public class MyPageAdapter extends PagerAdapter {
public Object instantiateItem(ViewGroup collection, int position) {
int resId = 0;
switch (position) {
case 0:
resId = R.id.voice1;
break;
case 1:
resId = R.id.voice2;
break;
}
return collection.findViewById(resId);
}
@Override
public int getCount() {
return 2;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}
这是我的 DIALOG 布局:
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
让我知道如何避免这种情况。
PS:应该在视图分页器中的每个布局看起来像这样,只是不同。文字:
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/voice2"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:text="Slide 1!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:layout_gravity="center"
android:textSize="50sp" />
</RelativeLayout>
【问题讨论】:
-
发布您的布局 xml
-
@GurwinderSingh 完成,我已经编辑了问题
-
您应该在对话框中调用
findViewById。不在当前活动中。 -
我认为您正在尝试在创建对话框之前绑定您的 ViewPager。你应该在对话框的 onCreate() 方法之后绑定它。
标签: java android xml android-fragments view