我有四个不同标签的viewPager
,我正在使用addOnPageChangeListener
来管理页面滚动,以下代码尝试从第一个view
获取fragment
当点击button
片段上的fourth
时,当我点击标签时这会正常工作,当我滚动页面时会中断,我无法找到原因,我得到的例外是java.lang.NullPointerException
视图error
EditTest
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float
positionOffset, int positionOffsetPixels) {
if(position == 3){
EditText title = (EditText) findViewById(R.id.title);
Log.d("Hello", title.getText().toString());
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
链接到gif,显示问题here
我试图将此代码移至onPageSelected
并且它无效,我也尝试使用以下代码获取fragment view
并且没有运气:
public View getFragmentView(int position) {
String fragmentD = "android:switcher:" + viewPager.getId() + ":" + position;
android.support.v4.app.Fragment fragment =
getSupportFragmentManager().findFragmentByTag(fragmentD);
return fragment.getView();
}
问题为什么这适用于标签点击而不是滚动?
答案 0 :(得分:0)
您必须在OnCreate中调用它
public class MainActivity extends Activity {
EditText title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
title = (EditText) findViewById(R.id.title);
}
}
在public void onPageSelected(int position)
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float
positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position == 3){
Log.d("Hello", title.getText().toString());
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});