Android:使用view pager在片段中添加标签

时间:2015-05-12 07:31:10

标签: android android-fragments android-viewpager swipe android-tabs

我已经在视图分页器中实现了滑动,有三个页面,即片段1,片段2和片段3.现在我想添加tab-host,其中包含5个在Fragment 3中具有不同视图的选项卡。然后最终有7个页面在视图中寻呼机。但是标签应该只在片段3中可见。

如何在片段3中添加标签?

public class HomeActivity extends FragmentActivity {

    // page adapter between fragment list and view pager
    public static PagerAdapter mPagerAdapter;
    // view pager
    public ViewPager mPager;
    // activity data
    public String p2text, p3text;
    public static List<Fragment> fragments;// = buildFragments();
    // / ArrayList<String> categories = {"1","2","3","4","5","6","7","8"};
    ArrayList<String> categories = new ArrayList<String>();
    static final String LOG_TAG = "HomeActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fragments = new ArrayList<android.support.v4.app.Fragment>();
        categories.add("1");
        categories.add("2");
        categories.add("3");
        categories.add("4");
        categories.add("5");
        categories.add("6");
        categories.add("7");

        addFragments(FragmentMore.class.getName(), 1);
        addFragments(FragmentMain.class.getName(), 2);
        addFragments(FragmentChatView.class.getName(), 3);

        mPager = (ViewPager) super.findViewById(R.id.pager);
        mPagerAdapter = new PagerAdapter(this, getSupportFragmentManager(), fragments, categories);
        mPager.setAdapter(mPagerAdapter);
        mPager.setCurrentItem(1);

    }

    public void addFragments(String className, int position) {
        // List<android.support.v4.app.Fragment> fragments = new
        // ArrayList<android.support.v4.app.Fragment>();

        // (int i = 0; i<categories.size(); i++) {
        Bundle b = new Bundle();
        b.putInt("position", position);
        fragments.add(Fragment.instantiate(this, className, b));
        // }

        // return fragments;
    }

    public void removeFragments(String className, int position) {
        // List<android.support.v4.app.Fragment> fragments = new
        // ArrayList<android.support.v4.app.Fragment>();

        // (int i = 0; i<categories.size(); i++) {
        Bundle b = new Bundle();
        b.putInt("position", position);
        fragments.remove(Fragment.instantiate(this, className, b));
        // }

        // return fragments;
    }

    private List<android.support.v4.app.Fragment> buildFragments() {
        List<android.support.v4.app.Fragment> fragments = new ArrayList<android.support.v4.app.Fragment>();

        for (int i = 0; i < categories.size(); i++) {
            Bundle b = new Bundle();
            b.putInt("position", i);
            fragments.add(Fragment.instantiate(this, FragmentSearch.class.getName(), b));
        }

        return fragments;
    }

    @Override
    public void onResume() {
        super.onResume();

        Log.e(LOG_TAG, "onResume");
    }

    @Override
    public void onPause() {
        super.onPause();

        Log.e(LOG_TAG, "onPause");
    }
}

2 个答案:

答案 0 :(得分:0)

我认为你要做的就是在这里完成:

通过这两个链接,您应该能够开发出您想要的内容。

希望有所帮助!

答案 1 :(得分:0)

使用ViewPager添加标签并不简单。 Google网页是@ Creating Swipe Views with Tabs。搜索“将标签添加到操作栏”的文本。它使用 ActionBar .TabListener和 ActionBar .addTab来制作GUI。

完整的示例代码是@ FragmentTabs.java。我认为这与Google页面的代码相同。

还有一个Google项目@ SlidingTabsBasic,我已经使用过它并且有效。 build.gradle文件可能存在一个小问题。

备注:Google网页使用{21}弃用的ActionBar.TabListeneraddTab方法。但是......它更容易实现。如果你把它作为一个大学项目,使用ActionBar可能是更明智的选择,就像一个想法。

祝你好运,玩得开心,让我们发布...