2014-02-18 5 views
0

Я создал блесну в моем main.xml:Нажмите на вращателя элемент андроида

<Spinner 
     android:id="@+id/spinner1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/categoria_arrays" 
     android:prompt="@string/categoria_prompt" /> 

И в strings.xml значения:

<string name="categoria_prompt">Choose</string> 
    <string-array name="categoria_arrays"> 
     <item>All</item> 
     <item>One</item> 
     <item>Two</item> 
     <item>Three</item> 
    </string-array> 

Я могу показать это нормально, но на самом деле есть никаких взаимодействий. Мне нужно, чтобы onClick над элементом открывал новую активность, например. Поэтому, если я нажимаю элемент в позиции 2, мне нужно перейти в действие One. Является ли это возможным?

Я пытался создать тост, когда я нажимаю на элемент, но не работает:

public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) { 
     Toast.makeText(parent.getContext(), 
      "OnItemSelectedListener : " + 
            parent.getItemAtPosition(pos).toString(), 
      Toast.LENGTH_SHORT).show(); 
     //HERE CHANGE ACTIVITY 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 
     } 

I Как я мог сделать?

+0

Попробуйте ниже решение и сообщите мне, работает оно или нет. – InnocentKiller

ответ

1

Просто назвать что-то вроде этого в вашем OnCreate после setContentView:

Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ 

      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) { 
       Toast.makeText(parent.getContext(), "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(), 
       Toast.LENGTH_SHORT).show(); 
       //HERE CHANGE ACTIVITY 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 
      } 

}); 
+0

Mmh - это синтаксис, скорректированный? –

+0

Мои ошибки, я быстро ответил без проверки синтаксиса, я отредактировал мой андерсер, проверьте его :) – Gomino

+0

Префект, когда я прихожу домой, я пытаюсь :-), но так, если я хочу изменить активность, просто напишу 'if (pos == 1) {Intent i = new Intent (currentActivity.this, One.class); startActivity (я); } 'например, внутри onItemSelected? –

0

Вам необходимо явно установить прослушиватель для счетчика.

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> arg0, View arg1, 
     // your code here 
    } 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // your code here 
    } 
}); 
1

Да, это возможно. Сделайте это как этот

public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) { 
     if (pos == 1){ 
       Intent i = new Intent(currentActivity.this, One.class); 
       startActivity(i); 

     }else if (pos == 2) 
     { 
       Intent i = new Intent(currentActivity.this, Two.class); 
       startActivity(i); 

     }else if (pos == 3){ 
       Intent i = new Intent(currentActivity.this, Three.class); 
       startActivity(i); 
     } 
     } 

и так далее ...

+0

Я также хотел бы добавить, что первый вариант ничего не должен делать, а для 'pos == 1',' pos == 2' и 'pos == 3' он должен начать другое действие - иначе, если я не ошибаюсь, когда действие вызывает 'onCreate', оно будет вызывать' onItemSelected' и сразу перейти к следующему действию (я думаю). – ujvl

+0

@Trust, Да, первый вариант ничего не сделает, потому что в основном позиция счетчика начинается с 0. – InnocentKiller

+0

Право, мое плохое; Я не знаю, почему я думал, что это начнется с 1. – ujvl

1

Вы должны установить выбранный пункт слушателя, как это:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
     // your code here 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parentView) { 
     // your code here 
    } 

}); 
0

Вы только что добавили onItemSelected метод или настроили onItemSelectListener? onItemSelected и onNothingSelected - это просто методы, вам нужно использовать onItemSelectListener.

Смежные вопросы