我在这段代码中注意到一种奇怪的行为:
如果没有使用setOffscreenPageLimit(),它将显示两个页面,然后立即退出并弹出堆栈。我注意到getCount()的调用次数与寻呼机应该显示的页面数量非常接近,而getItem()的调用次数约为5-6次。
当我将OffscreenPageLimit()设置为7时,它将显示8页,然后弹出。
有什么解释吗?
package ;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.util.List;
import java.util.UUID;
public class PagerActivity extends AppCompatActivity {
public static final String EXTRA_ID =
"_id";
private ViewPager mViewPager;
private List<Cap> mCaps;
public static Intent newIntent(Context packageContext, UUID id) {
Intent intent = new Intent(packageContext, PagerActivity.class);
intent.putExtra(EXTRA_ID, id);
return intent;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pager);
UUID Id = (UUID) getIntent()
.getSerializableExtra(EXTRA_ID);
mViewPager = (ViewPager) findViewById(R.id.view_pager);
mCaps = CapLab.get(this).getCaps();
FragmentManager fragmentManager = getSupportFragmentManager();
mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) {
@Override
public Fragment getItem(int position) {
Cap cap= mCaps.get(position);
return CapFragment.newInstance(cap.getId());
}
@Override
public int getCount() {
return mCaps.size();
}
});
//mViewPager.setOffscreenPageLimit(100);
for(int i = 0; i < mCaps.size(); i++) {
if (mCaps.get(i).getId().equals(id)) {
mViewPager.setCurrentItem(i);
break;
}
}
}
}