user6792790
user6792790

Reputation: 688

How to move to another tab without clicking the tab on Android Studio?

My main activity pretty much sets up the tabs and displays the content inside the ViewPager. I am able to navigate to another tab by clicking the tabs.

Code:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    private SectionsPageAdapter pageAdapter;
    private ViewPager mViewPager;


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

        pageAdapter = new SectionsPageAdapter(getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter

        mViewPager = (ViewPager) findViewById(R.id.container);
        setupViewPager(mViewPager);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager((mViewPager));


    }

    // Add fragments to SectionsPageAdapter and give titles
    private void setupViewPager(ViewPager viewPager) {
        SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
        adapter.addFragment(new ProfileTab(), "Profile");
        adapter.addFragment(new GithubTab(), "Github Repos");
        adapter.addFragment(new FollowerTab(), "Followers");
        adapter.addFragment(new FollowingTab(), "Followings");
        viewPager.setAdapter(adapter);
    }


}

However, when I try to navigate to another tab by clicking on a TextView from one of the pages, it gives me an error. What I've tried so far is,

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

        View view = inflater.inflate(R.layout.profile_tab, container, false);

        ... Code Hidden ...
        // numRepos is the TextView that I have

        numRepos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Toast.makeText(getActivity().getApplicationContext(), "num repos", Toast.LENGTH_SHORT).show();
                viewPager.setCurrentItem(2);
            }
        });


        return view;

And I actually knew this wouldn't work because the viewPager in this page is not same as the ViewPager in the MainActivity.java. How can I navigate to another tab by clicking the numRepos TextView?

Upvotes: 2

Views: 1546

Answers (5)

MOF
MOF

Reputation: 163

Try add the viewPager findViewById Like this maybe help

 viewPager = (ViewPager) getActivity.findViewById(R.id.container);
 numRepos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Toast.makeText(getActivity().getApplicationContext(), "num repos", Toast.LENGTH_SHORT).show();
                viewPager.setCurrentItem(2);
            }
        });

Upvotes: 0

IntelliJ Amiya
IntelliJ Amiya

Reputation: 75788

Create STATIC method in MainActivity section.

public static ViewPager mViewPager; //GLOBAL
public static SectionsPageAdapter pageAdapter; //GLOBAL

public static void _openITEM() // Create this static method
{
    viewPager.setCurrentItem(2);
}

Then

numRepos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               _openITEM();
            }
        });

Upvotes: 1

keshav
keshav

Reputation: 3255

Create this method in your MainActivity -

public void navigateToPage(int i) {
        viewPager.setCurrentItem(i);
    }

Then call this method like this from any of your fragments -

    ((MainActivity)getActivity()).navigateToPage(2);

Upvotes: 0

Vidhi Dave
Vidhi Dave

Reputation: 5684

Try this in your fragment :

ViewPager mviewPager = (ViewPager) getActivity().findViewById(R.id.viewpager);

this id will be your viewpager id which is given in activity layout.

then just use this. mviewPager.setCurrentItem(2);

Upvotes: 2

Laur89
Laur89

Reputation: 105

Try to put this in the onClick method:

TabActivity tabs = (TabActivity) getParent();
tabs.getTabHost().setCurrentTab(2);

Upvotes: 0

Related Questions