Android 显示重复数据的ViewPager
我有以下问题, 第一个viewpager错误地显示第二个viewpager的内容 当我滑到第二个viewpager时,内容相同,正确显示第二个viewpager 要解决这个问题,我必须滑到第三个,这样FragmentStatePagerAdapter才能重新加载 然后正确显示第一个视图页面的内容Android 显示重复数据的ViewPager,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我有以下问题, 第一个viewpager错误地显示第二个viewpager的内容 当我滑到第二个viewpager时,内容相同,正确显示第二个viewpager 要解决这个问题,我必须滑到第三个,这样FragmentStatePagerAdapter才能重新加载 然后正确显示第一个视图页面的内容 package com.example.android.effectivenavigation; import android.os.Bundle; import android.support.v4
package com.example.android.effectivenavigation;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MainActivity extends FragmentActivity {
static int myViewPagerItem;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyPageAdapter mFragmentStatePagerAdapter = new MyPageAdapter(getSupportFragmentManager());
setContentView (R.layout.refuel_viewpager);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(mFragmentStatePagerAdapter);
}
public static class MyPageAdapter extends FragmentStatePagerAdapter {
public MyPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
myViewPagerItem = i;
return new ViewFragment();
}
@Override
public int getCount() {
return 10;
}
}
public static class ViewFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View v = inflater.inflate(R.layout.view, container, false);
TextView text1 = (TextView) v.findViewById(R.id.text1);
text1.setText("Page: " + myViewPagerItem);
return v;
}
}
}
这样做
public class MainActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyPageAdapter mFragmentStatePagerAdapter = new MyPageAdapter(getSupportFragmentManager());
setContentView (R.layout.refuel_viewpager);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(mFragmentStatePagerAdapter);
}
public class MyPageAdapter extends FragmentStatePagerAdapter {
public MyPageAdapter(FragmentManager fm) {
super(fm);
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int i) {
return new ViewFragment(i);
}
@Override
public int getCount() {
return 10;
}
}
public class ViewFragment extends Fragment {
int pageno;
public ViewFragment(int pageNo){
this.pageno=pageNo;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View v = inflater.inflate(R.layout.view, container, false);
TextView text1 = (TextView) v.findViewById(R.id.text1);
text1.setText("Page: " + pageno);
return v;
}
}
}
您不是填充适配器,这就是为什么myViewPagerItem显示相同的值它显示:第2,2,3,4页。。。当我向后滑动4,3,2,1时,我是如何填充适配器的?这就解决了,非常感谢你,现在我想知道为什么我的方法不起作用了!因为您使用静态变量来显示片段。当您说静态变量不是类实例的一部分时,它只创建一次并在多个片段实例之间共享。您正在getItem()方法中更改它,因为它是静态的,反映在所有片段实例中并重复。我的问题得到了解决,得到了正确的指导,不能要求更多!再次感谢你!这是一种不正确的方法,请确保您从来没有非空的片段构造函数,更好的方法是使用setArguments将页码作为参数发送到包中!!!