10

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

@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 不包含微调器的选定项的值,但它是空的...

问题出在哪里?

提前谢谢。

4

6 回答 6

33

采用:

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

            }
        });
于 2013-03-21T11:13:10.703 回答
7

试试这个:

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();
        }
    }
于 2013-03-21T11:08:19.660 回答
2

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

不是

imc_met=Spinner.getSelectedItem().toString();
于 2014-08-03T06:56:33.637 回答
1
int position = Arrays.asList(getResources().getStringArray(R.array.country_value_array)).indexOf(address.getCountry());

这将按值获取索引。

于 2013-08-30T06:26:27.027 回答
0

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

String spinner_value = ((Spinner)findViewById(R.id.spinner1)).getSelectedItem().toString(); 
于 2014-12-04T20:56:11.937 回答
-2

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

spinner.setOnItemSelectedListener(this);
于 2015-12-21T07:41:09.777 回答