Search code examples
androiddrop-down-menuandroid-spinneronitemselectedlistener

How to open different activities on item selected on drop down menu on the toolbar


I have searched for this over the internet and haven't found appropriate answers. I am loading a spinner drop down menu on my toolbar which contains items that open different activities after being selected. So far I have been able to create a toast which returns the name of the selected item. But I would like to open different activities for each item on the menu. I know this might be a duplicate somewhere but their answers haven't worked for mine yet. This is my spinner:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:elevation="2dp"
    android:background="@color/primaryColor"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">
    <Spinner
        android:id="@+id/spinner_nav"
        android:layout_width="wrap_content"
        android:gravity="bottom"
        android:layout_height="wrap_content"></Spinner>

</android.support.v7.widget.Toolbar>

And this is my MainActivity.java

public class MainActivity extends ActionBarActivity {

    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);


        final Spinner spinner_navs = (Spinner) findViewById(R.id.spinner_nav);

        SpinnerAdapter mSpinner = ArrayAdapter.createFromResource
                (this, R.array.action_bar_spinner, android.R.layout.simple_spinner_dropdown_item);
        spinner_navs.setAdapter(mSpinner);
        spinner_navs.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String item = parent.getItemAtPosition(position).toString();
                    Toast.makeText(parent.getContext(), item, Toast.LENGTH_LONG).show();

                }


            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }

I know I am a newbie, but any help on this I would appreciate it. Thanks in advance.


Solution

  • Use this

    spinner_nav.setOnItemSelectedListener(new OnItemSelectedListener() {
    
       @Override
       public void onItemSelected(AdapterView<?> adapter, View v,
         int position, long id) {
        // On selecting a spinner item
    
        if(position==0){
            // open activity 1
        }else if(position==1){
            // open activity 2
        }
        else if(position==2){
            // open activity 3
        }
       }
    
       @Override
       public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
    
       }
      });