android - 在 Android 的 Fragment Java 中获取选项卡的文本/标题

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

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

我想知道选择了哪个选项卡并相应地加载 webview。我该怎么做?

我尝试过使用 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);
}
 }

最佳答案

我会在您的 Fragment 中编写一个 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");
    }
}

然后像这样将 fragment 添加到您的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) {

            }
        });
}

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

关于android - 在 Android 的 Fragment Java 中获取选项卡的文本/标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37950156/

相关文章:

Android Fragments 不更新

android - 如何在 Fragment 和未附加的 Activity 之间进行通信?

android - 将 ActionBar 搜索查询传递给 fragment

android - TextView自动增长高度android

android - 在 android 中替换 fragment 时 addToBackstack 不起作用

java - 如何生成.class文件?

android - fragment 和抽屉导航的不同工具栏

java - 屏幕关闭时,倒数计时器无法正常工作

java - 当我在 Android 上扩展应用程序时,上下文在 Glide 上不起作用

android - 如何避免将相同的 fragment 添加到堆栈