java - Android Studio,如何将 fragment 添加到我的选项卡菜单?

标签 java android

我在网上找到了一个选项卡导航 fragment ,我想知道如何向其中添加多个 fragment 。

我想让它这样工作:

  • 如果我选择菜单中的第一个位置,它将打开fragment_one.xml。
  • 如果我选择菜单中的第二个位置,它将打开fragment_two.xml。

目前,我只有 1 个 fragment ,我不知道如何添加更多 fragment 。

package com.example.myapp;

import java.util.Locale;

import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.FragmentPagerAdapter;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements ActionBar.TabListener {

    SectionsPagerAdapter mSectionsPagerAdapter;


    ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }
        });

        for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {

            actionBar.addTab(
                    actionBar.newTab()
                            .setText(mSectionsPagerAdapter.getPageTitle(i))
                            .setTabListener(this));
        }
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {

        mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return PlaceholderFragment.newInstance(position + 1);
        }

        @Override
        public int getCount() {
            return 3;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            Locale l = Locale.getDefault();
            switch (position) {
                case 0:
                    return getString(R.string.title_section1).toUpperCase(l);
                case 1:
                    return getString(R.string.title_section2).toUpperCase(l);
                case 2:
                    return getString(R.string.title_section3).toUpperCase(l);
            }
            return null;
        }
    }


    public static class PlaceholderFragment extends Fragment {
     
        private static final String ARG_SECTION_NUMBER = "section_number";

     
        public static PlaceholderFragment newInstance(int sectionNumber) {
            PlaceholderFragment fragment = new PlaceholderFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_omnie, container, false);
            return rootView;
        }
    }

}

最佳答案

那么您需要创建 3 个不同的 fragment ,例如“占位符 fragment ”

和PagerAdapter部分

public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {


    switch(position)
        {
        case 0: return PlaceholderFragment.newInstance(position + 1);
        case 1:  return FirstFragment(position + 1);

        case n:  return nthFragment(position + 1);
}

        }

        @Override
        public int getCount() {
            return 3;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            Locale l = Locale.getDefault();
            switch (position) {
                case 0:
                    return getString(R.string.title_section1).toUpperCase(l);
                case 1:
                    return getString(R.string.title_section2).toUpperCase(l);
                case 2:
                    return getString(R.string.title_section3).toUpperCase(l);
            }
            return null;
        }
    }

或查看本教程

http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

关于java - Android Studio,如何将 fragment 添加到我的选项卡菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632117/

相关文章:

java - 在 JScrollPane 上停用 ScrollOnExpand

java - Swing 中的计划任务(定时器)

java - 如何为硬币翻转游戏设计 "machine learning"方法

android - Android应用程序中drawable文件夹中图像的不同大小

android - GLS 错误 : INVALID_AUDIENCE in google cloud endpoints

android - android root(/)如何使用系统分区上的 'mount'程序将系统分区挂载到/system上?

java - Spring如何处理文件保存

java - 是否可以使用Java获取Chrome实时控制台日志?

java - Android Fragmenttransaction .replace 错误的第二个参数

android - 不兼容的Gradle版本-Android