我已经设置了一个简单的ViewPager,每页都有一个高度为200dp的ImageView.
这是我的寻呼机:
pager = new ViewPager(this);
pager.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
pager.setBackgroundColor(Color.WHITE);
pager.setOnPageChangeListener(listener);
layout.addView(pager);
Run Code Online (Sandbox Code Playgroud)
尽管将高度设置为wrap_content,但即使imageview仅为200dp,寻呼机也会填充屏幕.我试图用"200"替换寻呼机的高度,但这给了我多种分辨率的不同结果.我无法将"dp"添加到该值.如何在寻呼机的布局中添加200dp?
为什么我会得到这个例外?
05-18 20:29:38.044: ERROR/AndroidRuntime(5453): java.lang.IllegalArgumentException: The key must be an application-specific resource id.
05-18 20:29:38.044: ERROR/AndroidRuntime(5453): at android.view.View.setTag(View.java:7704)
05-18 20:29:38.044: ERROR/AndroidRuntime(5453): at com.mypkg.viewP.inflateRow(viewP.java:518)
Run Code Online (Sandbox Code Playgroud)
有问题的一行是:
((Button) row.findViewById(R.id.btnPickContact)).setTag(TAG_ONLINE_ID,objContact.onlineid);
Run Code Online (Sandbox Code Playgroud)
我把它定义为:
private static final int TAG_ONLINE_ID = 1;
Run Code Online (Sandbox Code Playgroud) 我会尽可能简短而简单地回答这个问题.
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
Run Code Online (Sandbox Code Playgroud)
当前项为0和1时返回子视图.但如果当前项为2则返回null
.这是为什么?
编辑:让我重温一下自己.如何在任何给定项目位置获取ViewPager的子视图?
我正在使用viewpager在多个页面上显示一些文本.我正在尝试获取当前视图,我选择了一个新页面.我想获取当前视图的原因是因为基于页码我正在改变一些视图组件的一些属性,如textview,image等.我使用下面的代码相同
ViewPager mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
View CurrView;
OnPageChangeListener pageChangelistener = new OnPageChangeListener() {
@Override
public void onPageSelected(int pageSelected) {
currView = mPager.getChildAt(mPager.getCurrentItem());
myTextView = (TextView)currView.findViewById(R.id.myTextView);
loadBookmarkSetting(pageSelected);//do some changes in myTextView properties based on the page number }
mPager.setOnPageChangeListener(pageChangelistener);
Run Code Online (Sandbox Code Playgroud)
现在我面临的问题是,在滚动3页后,当我到第4页时,我在"myTextView =(TextView)currView.findViewById(R.id.myTextView);"行上得到nullpointer异常.这是因为currView为null.如果我在这里做错了什么想法.有没有其他方法可以捕获viewpager中的当前视图(页面),以便我可以根据我所在的页码对视图进行更改?
问题:如何获取ViewPager FragmentStatePagerAdapter的当前视图?
FragmentStatePagerAdapter
是必需的,不是PagerAdapter
.
instantiateItem(View container, int position)
.这适用于PagerAdapter.FragmentStatePagerAdapter
该instantiateItem有一个ViewGroup PARAM 没有 查看 PARAM:instantiateItem(**ViewGroup** container, int position)
所以我希望这不是不可能,是吗?请帮忙!
更新: Logcat has been added to the question
我实际上想要改变视图(从一个片段到另一个片段.)button Click
我尝试了很多东西,但我无法做到.我还写了一个CustomViewPager
停止在刷屏幕时更改页面.它工作正常.
这是我的代码:
MyFragment
public CustomViewPager mViewPager;
public Button next;
public static int count=0;
public static final MyFragment newInstance(String message,ArrayList<String> a)
{
MyFragment f = new MyFragment();
Bundle bdl = new Bundle(1);
bdl.putString(EXTRA_MESSAGE, message);
bdl.putStringArrayList(EXTRA_ARRAY, a);
f.setArguments(bdl);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String message = getArguments().getString(EXTRA_MESSAGE);
View v = inflater.inflate(R.layout.myfragment_layout, container, false);
spinner = (Spinner)v.findViewById(R.id.spinoptions);
answer = (EditText)v.findViewById(R.id.answer);
next = …
Run Code Online (Sandbox Code Playgroud) android ×6