【问题标题】:Android - How to get the selected item value from a spinner and put it into a string?Android - 如何从微调器中获取所选项目的值并将其放入字符串中?
【发布时间】:2016-01-11 21:50:59
【问题描述】:

我在这个线程上阅读了许多类似的问题,但没有一个能帮助我...... 这是我的代码:

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

    Spinner spinner = (Spinner) findViewById(R.id.imc_spinner);
    // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
    R.array.imc_array, android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    spinner.setAdapter(adapter);

}

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    // An item was selected. You can retrieve the selected item using

    imc_met = parent.getItemAtPosition(pos).toString();

}

我将 imc_met 声明为 public String imc_met;。问题是imc_met不包含spinner的选中项的值,而是为null...

问题出在哪里?

提前致谢。

【问题讨论】:

    标签: android spinner


    【解决方案1】:

    用途:

    imc_met=Spinner.getSelectedItem().toString();

    改为:

    imc_met = parent.getItemAtPosition(pos).toString();

    更新:

    您似乎以不正确的方式将侦听器分配给您的微调器,请执行以下操作:

    spin.setOnItemSelectedListener(new OnItemSelectedListener() {
    
                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    String imc_met=spin.getSelectedItem().toString();
    
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub
    
                }
            });
    

    【讨论】:

    • 如果我把它放到 OnItemSeelected 我给我错误:“无法从类型 AdapterView 对非静态方法 getSelectedItem() 进行静态引用”
    • 当然,我只是这样声明它:“public String imc_met;”
    • 清理和刷新,但没有任何变化
    • @RobinHood:我将代码添加到 onCreate 方法中,但它总是告诉我错误:“无法从类型 AdapterView 对非静态方法 getSelectedItem() 进行静态引用”在“imc_met=Spinner.getSelectedItem().toString();”行上
    • 最后它似乎工作了。我将您的代码添加到 OnCreate 方法中,我使用了“imc_met = arg0.getItemAtPosition(arg2).toString();”,然后我添加了这两个方法公共类: public void onItemSelected(AdapterView> arg0, View arg1, int arg2, long arg3) { // TODO 自动生成的方法存根 } public void onNothingSelected(AdapterView> arg0){ // TODO 自动生成method stub } 我必须检查代码才能了解它是如何工作的,但现在它没有给我任何错误,并且 imc_met 的值是正确的。
    【解决方案2】:

    试试这个:

    imc_met=Spinner.getSelectedItem().toString();
    

    对不起。我忘了

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            imc_met=Spinner.getSelectedItem().toString();
            }
        }
    

    【讨论】:

    • 我尝试过,但它告诉我:“无法从类型 AdapterView 对非静态方法 getSelectedItem() 进行静态引用”
    • 它给了我同样的错误,把它放在“spinner.setAdapter(adapter);”之后并通过删除 onItemSelected 方法
    • 需要onItemSelected 如果微调器值发生变化,那么它不会返回更新一,因为您建议他在onCreate 内执行。
    • 如果我删除 onItemSelected 方法,它会告诉我“类型 MainActivity 必须实现继承的抽象方法 AdapterView.OnItemSelectedListener.onItemSelected(AdapterView>, View, int, long)” 在“公共类 MainActivity"
    • 如果我把它放到 onCreate 方法中,它会告诉我:“类型 new AdapterView.OnItemSelectedListener(){} 必须实现继承的抽象方法 AdapterView.OnItemSelectedListener.onNothingSelected(AdapterView>)”跨度>
    【解决方案3】:

    imc_met=spinner.getSelectedItem().toString();
    

    不是

    imc_met=Spinner.getSelectedItem().toString();
    

    【讨论】:

      【解决方案4】:
      int position = Arrays.asList(getResources().getStringArray(R.array.country_value_array)).indexOf(address.getCountry());
      

      这将按值获取索引。

      【讨论】:

        【解决方案5】:

        如果在 onCreate() 方法中没有定义微调器,那么必须使用这个:

        String spinner_value = ((Spinner)findViewById(R.id.spinner1)).getSelectedItem().toString(); 
        

        【讨论】:

          【解决方案6】:

          在您的 onCreate() 方法中尝试此代码:

          spinner.setOnItemSelectedListener(this);
          

          【讨论】:

            猜你喜欢
            • 2017-09-27
            • 2021-06-28
            • 2020-03-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-07-16
            • 1970-01-01
            相关资源
            最近更新 更多