涉及Android Spinners的switch语句存在问题

时间:2012-06-17 04:28:23

标签: android spinner switch-statement

我正在尝试在我的视图中使用2个微调器,并且目前正在实现“OnItemSelected”方法。我有一个switch语句设置告诉旋转器分开,但它似乎没有工作由于某种原因。

这是我的代码:

    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.widget.Toast;
    import java.util.List;
    import java.util.ArrayList;
    import android.widget.AdapterView.OnItemSelectedListener;
    /**
     * This is the activity for feature 1 in the dashboard application.
     * It displays some text and provides a way to get back to the home activity.
     *
     */

    public class F1Activity extends DashboardActivity implements OnItemSelectedListener
    {

    /**
     * onCreate
     *
     * Called when the activity is first created. 
     * This is where you should do all of your normal static set up: create views, bind data to lists, etc. 
     * This method also provides you with a Bundle containing the activity's previously frozen state, if there was one.
     * 
     * Always followed by onStart().
     *
     * @param savedInstanceState Bundle
     */





    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView (R.layout.activity_f1);
        setTitleFromActivityLabel (R.id.title_text);

        //declaring variables

        Button submitButton = (Button) findViewById(R.id.button1);
        Button cancelButton = (Button) findViewById(R.id.button2);

        //getting arrays from strings file
        String[] regions = getResources().getStringArray(R.array.regions_array);
        String[] grids = getResources().getStringArray(R.array.grids_array);

        Spinner gridSpinner = (Spinner) findViewById(R.id.gridSpinner);
        Spinner regionSpinner = (Spinner) findViewById(R.id.regionSpinner);

        //creating adapters for both spinners

        ArrayAdapter<String> dataAdapter = 
            new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, grids);
        ArrayAdapter<String> regionAdapter = 
                new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, regions);

        // drop down layout style with radio button type.

        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapters to spinners
        gridSpinner.setAdapter(dataAdapter);
        regionSpinner.setAdapter(regionAdapter);
        gridSpinner.setOnItemSelectedListener(this);
        regionSpinner.setOnItemSelectedListener(this);

        submitButton.setOnClickListener(new View.OnClickListener() {
               public void onClick(View view){
                   Intent changeAdd = new Intent();
                   setResult(RESULT_OK, changeAdd);

                   EditText nameText = (EditText) findViewById(R.id.nameTextBox);
                   EditText passText = (EditText) findViewById(R.id.passwordTextBox);

                   if(nameText.getText().toString().length() > 0 && 
                           passText.getText().toString().length() > 0) //TAKE CARE OF LISRVIEW/DROPDOWN
                   {
                         Toast.makeText(getApplicationContext(), 
                           "Loading...", Toast.LENGTH_LONG).show();
                            // make an intent to start the virtual world activity..................like in addGridActivity/screen switch!
                            finish();

                   }
                   else
                   {
                       Toast.makeText(getApplicationContext(), "Sorry, you have to complete all the fields", 
                               Toast.LENGTH_SHORT).show();

                   }


               }
        });

        cancelButton.setOnClickListener(new View.OnClickListener() {
               public void onClick(View view){
                   Intent changeAdd = new Intent();
                   setResult(RESULT_OK, changeAdd);
                   // cancelled and went back to home screen

                   finish();


               }
        });

    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long arg3) {
        // to handle the selection of the gridSpinner or the regionSpinner
        int id = parent.getId();

        switch(id)
        {
        case R.id.gridSpinner:
            Toast.makeText(parent.getContext(), "you selected" +
            parent.getItemAtPosition(pos).toString() + "from the grid spinner", Toast.LENGTH_LONG);
            break;
        case R.id.regionSpinner:
            Toast.makeText(parent.getContext(), "you selected" + 
            parent.getItemAtPosition(pos).toString() + "from the region spinner", Toast.LENGTH_LONG);
            break;
        default:
            break;
        }

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }



} // end class


<code>

3 个答案:

答案 0 :(得分:1)

int id = parent.getId();替换为int id = view.getId();

答案 1 :(得分:1)

您的开关工作正常。它似乎无法正常工作的原因是因为显示Toast的代码缺少show()次调用。

而不是:

        Toast.makeText(parent.getContext(), ..., Toast.LENGTH_LONG);

这样做:

        Toast.makeText(parent.getContext(), ..., Toast.LENGTH_LONG).show();

我自己也犯了同样的错误:)

答案 2 :(得分:0)

您需要根据视图的ID而不是视图适配器进行切换。尝试将int id = parent.getId();更改为int id = view.getId();