【发布时间】:2016-12-26 05:42:32
【问题描述】:
基本上我只想在对话框中有一个视图寻呼机。就是这样,但由于某种原因,对话框为空?
这是我的对话代码:
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) dialog.findViewById(R.id.viewpager);
pager.setOffscreenPageLimit(3);
pager.setAdapter(adapter);
dialog.show();
这里是对话框布局,voicedialog,只是一个空视图寻呼机:
<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"
/>
这是适配器:
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;
case 2:
resId = R.id.voice3;
break;
}
return collection.findViewById(resId);
}
@Override
public int getCount() {
return 3;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}
如此简单,对吗?但是,当我运行此代码时,我得到一个 EMPTY 对话框:
相反,它应该显示我可以滑动浏览的三个布局(voice1、voice2、voice3)!这些布局只有一个文本视图,但没有显示。
请告诉我如何实现这一点。令人沮丧——我花了将近 6 个小时试图解决这个问题 :)
【问题讨论】:
-
您收到任何 logcat 警告?
-
@Divyesh No :((
-
是否需要将视图添加到
instantiateItem中传入的集合中?我对视图寻呼机不是很熟悉,但文档状态提到“。到时完成更新返回与实例化项返回的关键对象关联的视图应该添加到传递给这些方法的父 ViewGroup” - 也是接受的示例@ 987654321@ 在instantiateItem中添加视图。 -
@Lyla 是的,我正在尝试添加三个布局
voice1voice2和voice3,每个布局都只包含一个文本视图到 ViewPager 的三个页面上。那么您是否建议在instantiateItem中调用.add方法? -
@Lyla 如果是这样,那么首先返回 ID 有什么意义?
标签: java android xml user-interface view