2013-03-21 9 views
10

これは私のコードです ...私はこのスレッド上の多くの同様の質問を読んで、それらのどれも私を助けていない:Android - 選択したアイテムの値をスピナーから取得して文字列に入れるにはどうすればよいですか?

@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(); 

} 

私はpublic String imc_met;としてimc_met宣言する。問題はimc_metにスピナーの選択項目の値が含まれていないことですが、それはnullです...

問題はどこですか?

Thxです。ごめんなさい

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

答えて

30

使用:代わりに

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 

      } 
     }); 
+0

私はそれをOnItemSeelectedに入れても、私はエラーを出します: "非静的メソッドgetSelectedItem()の型をAdapterView から静的に参照することはできません" – Gimmy88

+0

何が宣言されているか、 ? – RobinHood

+0

もちろん、私はこのように宣言します: "public String imc_met;" – Gimmy88

5

はこれを試してみてください。私は忘れてしまった

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

私はそれを試みますが、「AdapterView 型から静的メソッドgetSelectedItem()を静的に参照することはできません」 – Gimmy88

+1

「spinner.setAdapter(adapter)」の後に同じエラーが表示されます。 ; "また、onItemSelectedメソッドを削除することによって、 – Gimmy88

+0

必要に応じて 'onItemSelected'が有効になり、' onCreate'の中で実行するように提案しているので、それを更新しません。 – RobinHood

1
int position = Arrays.asList(getResources().getStringArray(R.array.country_value_array)).indexOf(address.getCountry()); 

これは値によってインデックスを取得します。あなたのonCreate()にこのコードを試してみてください

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

はスピナーがのonCreateで定義されていない()メソッドであれば、これを使用する必要が

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

ない

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

です方法:

spinner.setOnItemSelectedListener(this); 
関連する問題