在Android中的Fragment Java中获取Tab的文本/标题

时间:2016-06-21 16:45:09

标签: android android-fragments android-fragmentactivity android-tabs

如何在TopFreeFragment.java中获取Tab的文本/标题?

我想知道选择了哪个标签,并相应加载了网页浏览。我怎么能这样做?

我尝试过使用sharedPreferences,但这不是正确的方法,也不能正常工作。

这里我想在TopFreeFragment.java

中显示标签标题的Toast
public class YouTube_Toolbar extends AppCompatActivity {

Toolbar toolbar;
TabLayout tabLayout;
ViewPager viewPager;
ViewPagerAdapter viewPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.you_tube__toolbar);

    toolbar = (Toolbar) findViewById(R.id.toolBar);
    setSupportActionBar(toolbar);

    tabLayout = (TabLayout) findViewById(R.id.tabLayout);
    viewPager = (ViewPager) findViewById(R.id.viewPager);

    viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
    viewPagerAdapter.addFragments(new TopFreeFragment(), "TUESDAY");
    viewPagerAdapter.addFragments(new TopFreeFragment(), "WEDNESDAY");
    viewPagerAdapter.addFragments(new TopFreeFragment(), "THURSDAY");
    viewPagerAdapter.addFragments(new TopFreeFragment(), "FRIDAY");
    viewPager.setAdapter(viewPagerAdapter);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
}
 public class TopFreeFragment extends Fragment {

WebView webView;
Button download;

public TopFreeFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState)

    return inflater.inflate(R.layout.fragment_top_free, container, false);
}
 }

1 个答案:

答案 0 :(得分:1)

我会在您的片段中编写newInstance()方法和getTitle()方法,并通过Bundle传递名称。

这样的事情:

<强> TopFreeFragment.java

public class TopFreeFragment extends Fragment {
    WebView webView;
    Button download;

    public TopFreeFragment() {
        // Required empty public constructor
    }

    public static TopFreeFragment newInstance(String title) {
        TopFreeFragment fragment = new TopFreeFragment();

        Bundle args = new Bundle();
        args.putCharSequence("title", title);
        fragment.setArguments(args);

        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)

        return inflater.inflate(R.layout.fragment_top_free, container, false);
    }

    public String getTitle() {
        Bundle args = getArguments();
        return args.getCharSequence("title", "NO TITLE FOUND");
    }
}

然后将片段添加到viewPagerAdapter,如下所示:

<强> YouTube_Toolbar.java

public class YouTube_Toolbar extends AppCompatActivity {

    Toolbar toolbar;
    TabLayout tabLayout;
    ViewPager viewPager;
    ViewPagerAdapter viewPagerAdapter;

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

        toolbar = (Toolbar) findViewById(R.id.toolBar);
        setSupportActionBar(toolbar);

        tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        viewPager = (ViewPager) findViewById(R.id.viewPager);

        viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
        viewPagerAdapter.addFragments(TopFreeFragment.newInstance("TUESDAY"), "TUESDAY");
        viewPagerAdapter.addFragments(TopFreeFragment.newInstance("WEDNESDAY"), "WEDNESDAY");
        viewPagerAdapter.addFragments(TopFreeFragment.newInstance("THURSDAY"), "THURSDAY");
        viewPagerAdapter.addFragments(TopFreeFragment.newInstance("FRIDAY"), "FRIDAY");
        viewPager.setAdapter(viewPagerAdapter);

        tabLayout.setupWithViewPager(viewPager);
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
}

要从片段中获取片段的标题,只需调用getTitle()即可。您可以传递任何您想要的标题作为newInstance(String title)方法的参数。