我有ViewPager三个Fragments,每个显示一个List(或Grid).
在新的Android API level 17(Jelly Bean 4.2)中,其中一个功能是嵌套片段.新功能描述说:
如果您使用ViewPager创建左右滑动并占用大部分屏幕空间的片段,则现在可以将片段插入到每个片段页面中.
所以,如果我理解正确的话,现在我可以在里面创建一个ViewPagerwith Fragments(里面有一个按钮),当用户按下按钮时显示另一个Fragment没有松动ViewPager使用这个新功能.
我已经花了我的早上尝试实现这几种不同的方式,但我不能让它工作......有人可以添加一个如何实现这个的简单示例吗?
PS:我只对这种方式感兴趣,getChildFragmentManager学习如何运作.
android android-fragments android-viewpager android-support-library android-nested-fragment
我有一个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 …Run Code Online (Sandbox Code Playgroud) 我无法使它正常工作。基本应用程序可以正常运行,但是其中一个布局文件上的ViewPager根本不显示任何片段。我多次检查代码,但找不到错误。当我尝试调试它时,我注意到它甚至都没有初始化您选择选项卡时应该使用的片段类。我的主要活动:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
new GetData(this).execute();
TabLayout tab_layout = (TabLayout) findViewById(R.id.tab_layout);
tab_layout.addTab(tab_layout.newTab().setText("CASUAL"));
tab_layout.addTab(tab_layout.newTab().setText("RANKED"));
tab_layout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tab_layout.getTabCount());
viewPager.setAdapter(adapter);
tab_layout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
} …Run Code Online (Sandbox Code Playgroud)