【问题标题】:Android :adding tabs in fragments using view pagerAndroid:使用视图寻呼机在片段中添加标签
【发布时间】:2015-05-12 07:31:10
【问题描述】:

我已经实现了在视图寻呼机中滑动三个页面,即 Fragment 1、Fragment 2 和 Fragment 3。现在我想添加 tab-host,它在 Fragment 3 中包含 5 个具有不同视图的选项卡。然后最终有 7 个页面在视图中寻呼机。但是标签应该只在 Fragment 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");
    }
}

【问题讨论】:

  • 可以添加一些代码吗?
  • 我已经添加了代码。我想在 FragmentChatView.class 中添加标签
  • 这不是小事。只是好奇,你是把它作为大学项目还是工作?

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


【解决方案1】:

我认为您正在尝试做的是在这里完成:

通过这两个链接,您应该能够开发您正在寻找的东西。

希望对您有所帮助!

【讨论】:

    【解决方案2】:

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

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

    还有一个谷歌项目@SlidingTabsBasic,我用过它,它可以工作。 build.gradle 文件可能存在小问题。

    注意事项:Google 网页使用ActionBar.TabListeneraddTab 方法,已被API 21 弃用。但是......它更容易实现。如果您将此作为一个大学项目,那么使用 ActionBar 可能是更明智的选择,就像一个想法一样。

    祝你好运,玩得开心,随时关注我们......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 2016-03-27
      相关资源
      最近更新 更多