jub*_*kon 3 android adapter android-fragments android-viewpager
我有一个ViewPager我想添加片段的。ViewPager 可以在屏幕上正确查看,但不幸的是它不包含任何内容。
我在一些帖子中看到了替换的建议
getSupportFragmentManager()
Run Code Online (Sandbox Code Playgroud)
和
getChildFragmentManager()
Run Code Online (Sandbox Code Playgroud)
但我需要ActionBar. 不幸的ChildFragmentmanager是,在AppCompatActivity.
在调试时,我意识到 Fragment 的onCreateView()方法被调用并返回一个布局。
问题:我怎样才能使Fragments可见?是我的代码与该示例的主要区别什么?
活动:
public class ViewPagerActivity extends AppCompatActivity {
private ViewPager mViewPager;
private List<Location> locationList = new ArrayList<>();
private locationsBaseHandler db;
private CustomPagerAdapter mAdapter;
private Location mLocation;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpager);
locationList.add(someData);
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mAdapter = new CustomPagerAdapter(this, getSupportFragmentManager(), locationList);
mViewPager.setAdapter(mAdapter);
}
}
Run Code Online (Sandbox Code Playgroud)
寻呼机适配器:
public class CustomPagerAdapter extends FragmentPagerAdapter {
private Context mContext;
private List<Location> locationList = new ArrayList<>();
public CustomPagerAdapter(Context mContext, FragmentManager fm, List<Location> locationList) {
super(fm);
this.locationList.addAll(locationList);
this.mContext = mContext;
}
@Override
public Fragment getItem(int position) {
return LocationFragment.newInstance(position);
}
@Override
public int getCount() {
return 5;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
分段:
public class LocationFragment extends Fragment {
private static final String ARG_LAYOUT_ID = "page_number";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.fragment_location, container, false);
return layout;
}
public static LocationFragment newInstance(int selectedIdForIndex) {
LocationFragment fragment = new LocationFragment();
Bundle args = new Bundle();
args.putInt(ARG_LAYOUT_ID, selectedIdForIndex);
fragment.setArguments(args);
return fragment;
}
public int getPageNumber() {
return getArguments().getInt(ARG_LAYOUT_ID);
}
}
Run Code Online (Sandbox Code Playgroud)
尝试删除方法isViewFromObject在CustomPagerAdapter。
@Override
public boolean isViewFromObject(View view, Object object) {
return false;
}
Run Code Online (Sandbox Code Playgroud)
我们可以看到这条评论isViewFromObject:
确定页面视图是否与 {@link #instantiateItem(ViewGroup, int)} 返回的特定键对象相关联。PagerAdapter 需要此方法才能正常运行。
| 归档时间: |
|
| 查看次数: |
2293 次 |
| 最近记录: |