Reputation: 1467
How can i get text/title of Tab inside TopFreeFragment.java?
I want to know which tab is selected and accordingly load the webview. How can i do that?
I have tried using sharedPreferences but that is not the correct way and neither it works properly.
Here i want to show Toast of the tab title inside the TopFreeFragment.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(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);
}
}
Upvotes: 3
Views: 3436
Reputation: 1010
try to pass in bundle title name and get in onAttah()
callback method and use that in your fragment.
ViewPagerAdapter
class code
Fragment fragment = new ViewOrderTabFragment();
Bundle args = new Bundle();
args.putString("title","tabOne");
fragment.setArguments(args);
fetch title in Fragment(ViewOrderTabFragment)
like this
String tabName="";
@Override
public void onAttach(@NonNull Context context) {
if (getArguments()!=null) {
tabName=getArguments().getString("position", "");
}
super.onAttach(context);
}
note: this will help us to logs when we have dynamic tabs with same fragment
Upvotes: 0
Reputation: 76
I would write a newInstance()
method and a getTitle()
method in your Fragment and pass the name in through a Bundle
.
Something like this:
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");
}
}
Then add the fragments to your viewPagerAdapter
like this:
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) {
}
});
}
To get the title of the fragment from within the fragment, simply call getTitle()
. You can pass whatever you want the title to be as the argument of the newInstance(String title)
method.
Upvotes: 2