Sui*_*eep 2 android android-fragments
我对Android环境很新,所以这个问题对你们有些人来说可能很简单.请尽量不要对我太苛刻.谢谢.
按照本网站上的教程:http://www.linux.com/learn/tutorials/761642-android-app-development-for-beginners-navigation-with-tabs,我已经成功创建了一个应用程序,有三个选项卡拥有它自己的layout.
然后我找到了另一个教程ViewPager:http://www.androidbegin.com/tutorial/android-viewpager-gallery-images-and-texts-tutorial/
我正在尝试将这两个应用程序组合成一个,这意味着将其ViewPager放入我的tab3.
如链接所示,tab3需要setTabListener并期望Fragment类如下:
ActionBar.Tab tab3;
Fragment fragmentTab3 = new FragmentTab3();
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
tab3.setTabListener(new MyTabListener(fragmentTab3));
actionBar.addTab(tab3);
Run Code Online (Sandbox Code Playgroud)
我完全没有关于如何修改代码的线索,因此它接受了一个扩展的类,PagerAdapter并允许tab3作为一个ViewPager
我已经构建了一个类似的应用程序,其中所有三个选项卡都包含其中的查看器.
选项卡实现与您提到的相同:
final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
setContentView(R.layout.activity_main);
actionBar.addTab(actionBar.newTab().setIcon(R.drawable.ic_action_file)
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setIcon(R.drawable.ic_action_music)
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setIcon(R.drawable.ic_action_video)
.setTabListener(this));
Run Code Online (Sandbox Code Playgroud)
将片段分配给各个标签,如下所示:
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Fragment mFragment;
Log.d(TAG, "Inside on tab selected");
switch (tab.getPosition()) {
case 0:
mFragment = Fragment1.newInstance(null);
ft.replace(R.id.content, mFragment, "fragment1");
break;
case 1:
mFragment = Fragment2.newInstance();
ft.replace(R.id.content, mFragment, "fragment2");
break;
case 2:
mFragment = Fragment3.newInstance();
ft.replace(R.id.content, mFragment, "fragment3");
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
现在fragment3不需要扩展pageradapter.第3个片段的内部布局,添加一个viewpager
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_music_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/colorBackground"
tools:context="com.gridants.cubeit.ui.MusicFragment" >
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#33b5e5"
android:paddingBottom="4dp"
android:paddingTop="4dp"
android:textColor="#fff" />
</android.support.v4.view.ViewPager>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
在fragment3代码中,声明viewpager和自定义fragmentStatePagerAdapter
mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter(
getChildFragmentManager());
mViewPager = (ViewPager) view.findViewById(R.id.pager);
mViewPager.setAdapter(mDemoCollectionPagerAdapter);
Run Code Online (Sandbox Code Playgroud)
以下是实现自定义适配器的示例代码
public class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter {
private final FragmentManager mFragmentManager;
public Fragment mFragmentAtPos0;
private Context context;
public DemoCollectionPagerAdapter(FragmentManager fm) {
super(fm);
mFragmentManager = fm;
}
@Override
public Fragment getItem(int i) {
Fragment mFragment;
Bundle args;
Log.d(TAG, "Inside on tab selected");
switch (i) {
case 0:
mFragment = new InnerFragment1();
break;
case 1:
mFragment = new InnerFragment2();
break;
case 2:
mFragment = new InnerFragment3();
break;
}
return mFragment;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
String title;
switch (position) {
case 0:
title = "OBJECT " + (position + 1);
break;
case 1:
title = "OBJECT " + (position + 1);
break;
default:
title = "OBJECT " + (position + 1);
break;
}
return title;
}
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
984 次 |
| 最近记录: |