【问题标题】:If else use in spinners如果在微调器中使用
【发布时间】:2016-10-13 17:11:26
【问题描述】:

我想获取微调器中的值,然后用户按下确定按钮,然后从微调器的值开始新的活动。字符串数组就是这样。我使用两个微调器值 get 并针对微调器启动新活动

Spinner s, s1;
    Button ok;
    Object _globalString, _globalString2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);

        s = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, array_spinner);
        s.setAdapter(adapter);

        s1 = (Spinner) findViewById(R.id.spinner01);
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, array_spinner01);
        s1.setAdapter(adapter1);
//
//    s2=(Spinner)findViewById(R.id.spinner02);
//    ArrayAdapter<String> adapter2=new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_dropdown_item,array_spinner02);
//    s2.setAdapter(adapter2);

        ok = (Button) findViewById(R.id.btn_ok);
        ok.setOnClickListener(this);

        s.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                _globalString = parent.getItemAtPosition(position);
            }

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

            }
        });

        s1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                _globalString2 = parent.getItemAtPosition(position);
            }

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

            }
        });

    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_ok) {
            if (_globalString.equals("Honda") || _globalString2.equals("Civic")) {
                startActivity(new Intent(getApplicationContext(), Civic.class));
            } else if (_globalString.equals("Toyota") || _globalString2.equals("Gli")) {
                startActivity(new Intent(getApplicationContext(), Toyota.class));
            }

        }
    }
}

这是可能产生错误的代码。抱歉申请已停止 所以我坚持这个代码。

【问题讨论】:

  • 添加崩溃日志。您是否在清单中添加了活动?
  • 你能提供崩溃的堆栈跟踪吗?它将极大地帮助想要帮助您的人。
  • 您不能将 setOnItemClickListener 用于微调器。让我们改变 setOnItemSelectedListener。

标签: java android if-statement spinner


【解决方案1】:

使用 setOnItemSelectedListener 代替 setOnItemClickListener

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    Spinner s, s1;
    Button ok;
    Object _globalString, _globalString2;
    String[] array_spinner = {"Honda", "Toyota"};
    String[] array_spinner01 = {"Civic", "Gli"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        s = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, array_spinner);
        s.setAdapter(adapter);

        s1 = (Spinner) findViewById(R.id.spinner01);
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, array_spinner01);
        s1.setAdapter(adapter1);
//
//    s2=(Spinner)findViewById(R.id.spinner02);
//    ArrayAdapter<String> adapter2=new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_dropdown_item,array_spinner02);
//    s2.setAdapter(adapter2);

        ok = (Button) findViewById(R.id.btn_ok);
        ok.setOnClickListener(this);

        s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                _globalString = parent.getItemAtPosition(position);

            }

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

            }
        });

        s1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                _globalString2 = parent.getItemAtPosition(position);
            }

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

            }
        });

    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_ok) {
            if (_globalString.equals("Honda") || _globalString2.equals("Civic")) {
                startActivity(new Intent(getApplicationContext(), Civic.class));
            } else if (_globalString.equals("Toyota") || _globalString2.equals("Gli")) {
                startActivity(new Intent(getApplicationContext(), Toyota.class));
            }

        }
    }
}

【讨论】:

  • 你还必须修正你的声明 Object _globalString, _globalString2;
  • 还提供使用 equalsIgnoreCase 而不是 equals
  • 我在你的消息 Object _globalString 到 String __globalString 之前修复了这个减速,所以同样的问题和 equalsIgnoreCase 不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多