Извлечь выбранный предмет из прядильщика? - PullRequest
5 голосов
/ 14 марта 2012

Я пытаюсь получить выбранный счетчик значений, и я использовал следующий код

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        Object item = parent.getItemAtPosition(pos);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});

Но я не могу использовать значение элемента вне функции! Я новичок в Java, пожалуйста, кто-нибудь, помогите мне .. я пытался реализовать распознавание голоса в Android

     public void speakButtonClicked(View v)
                   {
                       startVoiceRecognitionActivity();
                   }

                   /**
                    * Fire an intent to start the voice recognition activity.
                    */
                   private void startVoiceRecognitionActivity()
                   {
                       Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);


 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition Demo...");
                    startActivityForResult(intent, REQUEST_CODE);
               }

               /**
                * Handle the results from the voice recognition activity.
                */
               @Override
            protected
               void onActivityResult(int requestCode, int resultCode, Intent data) 
               {


                   if (requestCode == REQUEST_CODE && resultCode == RESULT_OK)
                   {
                       // Populate the spinner with the String values the recognition engine thought it heard

                       ArrayList<String> matches = data.getStringArrayListExtra(
                               RecognizerIntent.EXTRA_RESULTS);
                       final  Button button12=(Button)findViewById(R.id.button12);

                       final Spinner Speech_spinner=(Spinner)findViewById(R.id.spinner3);         


                    Speech_spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                              matches));
                    Speech_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                            Text = parent.getItemAtPosition(pos).toString();

                        }
                        public void onNothingSelected(AdapterView<?> parent) {
                        }
                    });

                        button12.setText(Text); 




                        }
                   super.onActivityResult(requestCode, resultCode, data);


               }

Нет значения в кнопке12

Ответы [ 6 ]

2 голосов
/ 14 марта 2012

использовать конечный объект, например:

final Object item;

вне onCreate

1 голос
/ 14 марта 2012

Если вы не собираетесь использовать его, когда пользователь выбрал, т. Е. Вызывать какой-то метод в вашем onItemSelected spinner.getSelectedItem ()

Вот так в вашем коде:

 ...
 //get object to use
 Object myObj = spinner.getSelectedItem();
 // use object.

В противном случае определите объект вне вашего OnItemSelectedListener, как и другие ответы.

1 голос
/ 14 марта 2012

Шаг 1. Если вы добавили счетчик статически, тогда используйте Spinner spin=(Spinner)findViewById(R.id.spinner); или динамически, вы можете использовать его как Spinner spin=new Spinner(YourActivity.this)

Шаг 2. Добавьте элементы в массив для отображения

array_spinner=new String[4];
array_spinner[0]="BFT";
array_spinner[1]="GFP";
array_spinner[2]="FSS";
array_spinner[3]="others";

Шаг 3. Выберите любой элемент из счетчика

ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, array_spinner);
      spin.setAdapter(adapter);

Шаг 4. Получите значение выбранного значения как

String anyvariable=String.valueOf(spin.getSelectedItem());
1 голос
/ 14 марта 2012

используйте значение pos в качестве индекса для массива, который вы добавили в адаптер, и получите это значение или

spnproj.setAdapter(new ArrayAdapter<String>(PaymentDetail.this, android.R.layout.simple_spinner_item,arr));     
    spnproj.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {

String value =arr[arg2];
1 голос
/ 14 марта 2012
class Myactivity ...{

Object item ;

oncreate(...){
   ...

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        item = parent.getItemAtPosition(pos);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});
}
}
1 голос
/ 14 марта 2012

объявляет объектный объект вне создаваемого объекта, чтобы он был доступен всему классу.

...