【问题标题】:Android spinner and editTextAndroid微调器和editText
【发布时间】:2015-01-18 07:42:11
【问题描述】:

我的想法是有一个文本字段,我可以在其中手动输入名称。

此外,我确实有一份姓名列表。如果该列表中有东 1 名称,则应在 EditText 的右侧出现一个图标,以便打开 Spinner 进行选择。

如果未选择任何项目,EditText 保持不变,如果已选择项目,EditText 将拥有该项目。

到目前为止,我正在处理可见性 - 但我的问题是 onNothingSelected 似乎根本没有被解雇。

public class MainActivity extends ActionBarActivity  {

private Spinner spinner;
private EditText text2;
private ImageButton button2;
private String spinner_value = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    spinner = (Spinner)findViewById(R.id.spinner);

    String[] str = {"","good", "dislike", "like", "hate", "moderate"};
    spinner.setPrompt("Set Text");
    ArrayAdapter<String> list = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, str);
    spinner.setAdapter(list);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                                   int arg2, long arg3) {
            TextView tv = (TextView)arg1;
            spinner_value = tv.getText().toString();
            if(spinner_value.length() == 0)
            {
                spinner_value = "Nothing";
            }
            Toast.makeText(getApplicationContext(), spinner_value, Toast.LENGTH_SHORT).show();
            spinner = (Spinner) findViewById(R.id.spinner);
            text2 = (EditText) findViewById(R.id.editText);
            button2 = (ImageButton) findViewById(R.id.imageButton);
            text2.setVisibility(View.VISIBLE);
            button2.setVisibility(View.VISIBLE);
            spinner.setVisibility(View.INVISIBLE);
            String myStr = spinner.getSelectedItem().toString();
            text2.setText(myStr);
            text2.requestFocus();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            Toast.makeText(getApplicationContext(), "NothingSelected", Toast.LENGTH_SHORT).show();
            spinner = (Spinner) findViewById(R.id.spinner);
            text2 = (EditText) findViewById(R.id.editText);
            button2 = (ImageButton) findViewById(R.id.imageButton);
            text2.setVisibility(View.VISIBLE);
            button2.setVisibility(View.VISIBLE);
            spinner.setVisibility(View.INVISIBLE);
            text2.requestFocus();
        }
    });
  }
}

【问题讨论】:

    标签: android android-edittext spinner


    【解决方案1】:

    默认情况下,创建微调器时会选择索引 0 处的项目。因此,即使用户实际上没有做任何事情,第一个项目也会被选中。您可以通过在 onItemSelected() 中设置断点(或其他一些通知)并看到它在启动时触发而无需用户执行任何操作来看到这种情况。

    要触发 onNothingSelected() 回调,无论选择什么项目都必须消失。

    【讨论】:

    • 什么情况下会触发呢?如果我打开 Spinner 并且没有通过单击其他地方来选择任何内容,那不是这样吗?
    • 没有。当您打开 Spinner 时,第一个项目已被选中。要触发 onNothingSelected(),当前选定的项目必须变为不可用。例如,视图设置为 Gone。
    • 好的,我明白了。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多