如何在TopFreeFragment.java中获取Tab的文本/标题?
我想知道选择了哪个标签,并相应加载了网页浏览。我怎么能这样做?
我尝试过使用sharedPreferences,但这不是正确的方法,也不能正常工作。
这里我想在TopFreeFragment.java
中显示标签标题的Toastpublic 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);
}
}
答案 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)
方法的参数。