akkk
akkk

Reputation: 1467

Get Text/Title of Tab inside Fragment Java in Android

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

Answers (2)

Mohd Qasim
Mohd Qasim

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

omkarmoghe
omkarmoghe

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

Related Questions