How can I switch tabs using a spinner?

0

I would like to implement the tab change for a spinner that I added inside the toolbar.

public class MainActivity extends FragmentActivity {  

/** 
 * The {@link android.support.v4.view.PagerAdapter} that will provide 
 * fragments for each of the sections. We use a 
 * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which 
 * will keep every loaded fragment in memory. If this becomes too memory 
 * intensive, it may be best to switch to a 
 * {@link android.support.v4.app.FragmentStatePagerAdapter}. 
 */  
SectionsPagerAdapter    mSectionsPagerAdapter;  

/** 
 * The {@link ViewPager} that will host the section contents. 
 */  
ViewPager mViewPager;  

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

    // Create the adapter that will return a fragment for each of the three  
    // primary sections of the app.  
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());  

    // Set up the ViewPager with the sections adapter.  
    mViewPager = (ViewPager) findViewById(R.id.pager);  
    mViewPager.setAdapter(mSectionsPagerAdapter); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarListaJogos);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);

    Spinner sp = (Spinner) findViewById(R.id.spinner_nav);
    List<String> listaMenu = new ArrayList<>();
    listMenu.add("Section 1");
    listMenu.add("Section 2");
    listMenu.add("Section 3");


    ArrayAdapter<String> adapter = 
            new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, listaMenu);

    sp.setAdapter(adapter);

}  

@Override  
public boolean onCreateOptionsMenu(Menu menu) {  
    // Inflate the menu; this adds items to the action bar if it is present.  
    getMenuInflater().inflate(R.menu.main, menu);  
    return true;  
}  

/** 
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
 * one of the sections/tabs/pages. 
 */  
public class SectionsPagerAdapter extends FragmentPagerAdapter {  

    public SectionsPagerAdapter(FragmentManager fm) {  
        super(fm);  
    }  

    @Override  
    public Fragment getItem(int position) {  
        // getItem is called to instantiate the fragment for the given page.  
        // Return a DummySectionFragment (defined as a static inner class  
        // below) with the page number as its lone argument.  
        Fragment fragment = new DummySectionFragment();  
        Bundle args = new Bundle();  
        args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1);  
        fragment.setArguments(args);  
        return fragment;  
    }  

    @Override  
    public int getCount() {  
        // Show 3 total pages.  
        return 3;  
    }  

    @Override  
    public CharSequence getPageTitle(int position) {  
        Locale l = Locale.getDefault();  
        switch (position) {  
        case 0:  
            return getString(R.string.title_section1).toUpperCase(l);  
        case 1:  
            return getString(R.string.title_section2).toUpperCase(l);  
        case 2:  
            return getString(R.string.title_section3).toUpperCase(l);  
        }  
        return null;  
    }  
}  

/** 
 * A dummy fragment representing a section of the app, but that simply 
 * displays dummy text. 
 */  
public static class DummySectionFragment extends Fragment {  
    /** 
     * The fragment argument representing the section number for this 
     * fragment. 
     */  
    public static final String ARG_SECTION_NUMBER = "section_number";  

    public DummySectionFragment() {  
    }  

    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
        View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false);  
        TextView dummyTextView = (TextView) rootView.findViewById(R.id.section_label);  
        dummyTextView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));  
        return rootView;  
    }  
}  

 }  

Follow the layout

<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/br.com.pixells.simuladorbr"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbarListaJogos"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#DC143C"
    app:subtitle="Teste"
    app:theme="@style/Theme.Abar.Widget"
    app:title="ToolBar">
    <Spinner
        android:id="@+id/spinner_nav"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
 </android.support.v7.widget.Toolbar> 

    <android.support.v4.view.ViewPager 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/pager"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        tools:context=".MainActivity" >  


        <android.support.v4.view.PagerTitleStrip  
            android:id="@+id/pager_title_strip"  
            android:layout_width="match_parent"  
            android:layout_height="wrap_content"  
            android:layout_gravity="top"  
            android:background="#33b5e5"  
            android:paddingBottom="4dp"  
            android:paddingTop="4dp" 
            android:textColor="#fff" />  


    </android.support.v4.view.ViewPager> 

    
asked by anonymous 05.12.2014 / 03:21

1 answer

0

To solve this problem I set the ViewPager setCurrentItem in the onIntemSelected method of the spinner listener.

In this way:

		        Spinner sp = (Spinner) findViewById(R.id.spinner_nav);
		        List<String> listaMenu = new ArrayList<>();
		        listaMenu.add("Menu 1");
		        listaMenu.add("Menu 2");
		        listaMenu.add("Menu 3");
		        listaMenu.add("Menu 4");
		        
		        ArrayAdapter<String> adapter = 
		        		new ArrayAdapter<String>(ActListaJogos.this, android.R.layout.simple_spinner_dropdown_item, listaMenu);
		        
		        sp.setAdapter(adapter);
		        
		        sp.setOnItemSelectedListener((new OnItemSelectedListener() {

					@Override
					public void onItemSelected(AdapterView<?> parent, View view,
							int position, long id) {
						// TODO Auto-generated method stub
						mViewPager.setCurrentItem(position);
						
					}

					@Override
					public void onNothingSelected(AdapterView<?> parent) {
						// TODO Auto-generated method stub
						
					}
		        	
				})); 
    
05.12.2014 / 23:58