我喜欢检查我做的是正确的,还是有更好的方式。 我喜欢在Android应用程序中实现选项卡。我发现我应该使用Fragment。
然后我用TabbedActivity
实现了我的应用程序。我在Tabs中添加了内容。
我在onCreate()
的{{1}}中添加了Tab作为
MainActivity
由于我想为两个不同的片段(frangment1.xml和frangment2.xml)使用两个xmls,我在PlaceholderFragment类中创建了两个空白片段,我使用{{添加了frangment1.xml和frangment2.xml 1}}变量
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("Accelerometer"));
tabLayout.addTab(tabLayout.newTab().setText("Gyroscope"));
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
我喜欢检查是正确的方式还是其他任何更好的方式。
答案 0 :(得分:1)
嘿,关于这段代码没什么好说的。我没有尝试过运行你的代码。但如果它为你奔跑它的罚款。即使我在android中使用这种类型的Tabs实现。但是因为根据新的android设计库,从那时起有很多变化。有许多新功能,不仅在设计方面,而且在功能方面。您可能想查看此链接,其中一些是在此处实现的。
http://www.androidhive.info/2015/09/android-material-design-working-with-tabs/
另外,对于谷歌选项卡上的指南,他们的实现,规范和所有这些东西都会检查出来。
https://www.google.com/design/spec/components/tabs.html#tabs-usage
答案 1 :(得分:0)
不,这不对。
你不应该在一个片段中制作两个片段。您应该将它们分开以逐步退出每个方法中的if条件(检查哪个视图是膨胀的)。假设现在你有两个独立的片段,你只需要检查适配器中的位置,选择你需要哪个片段。
@Override
public Fragment getItem(int position) {
switch(position) {
case 0:
return new MyFragment1();
break;
case 1:
return new MyFragment2();
break;
}
return null;
}