2017-01-09 9 views
3
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.item_listview); 

    myspinner = (Spinner)findViewById(R.id.spinnertype); 
    String provider = myspinner.getSelectedItem().toString(); 

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, type_arrays,R.layout.support_simple_spinner_dropdown_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    myspinner.setAdapter(adapter); 

    myspinner.setOnItemSelectedListener(new AdapterView.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(); 
     } 

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

} 
} 

я пробовал различные виды тостов, но до сих пор оно не появится. что пошло не так? Я просмотрел несколько сообщений и говорит, что я не могу использовать onclicklistener для блесныПочему мой тост не работал?

+2

'parent.getContext()' не должен ли это быть 'context'' Activity'? Например, имя My 'Activity',' MainActivity' **, поэтому, Use **: 'MainActivity.this' Это должен быть« контекст »этого' Activity'. Но я думаю, что если вы используете свой собственный код (' parent.getContext() ') внутри другого действия, оно не появится, потому что это где-то еще, на самом деле вы знаете .. – Mohsen

+0

@Mohsen, у меня есть список прямо под spinner. это покрывало тост или его только потому, что я использую parent.getContext? – Sarah

+0

Ну, как я видел ваши коды, просто попробуйте использовать текущий контекст 'Activity' вместо этого' parent.getContext() '. Затем, если вы не видите «Toast», вам придется отлаживать коды. Кроме того, Не могли бы вы попытаться использовать ПРОСТОЙ ТОСТ без получения элемента адаптера? просто: «Toast.makeText (MainActivity.this,« OnItemSelectedListener: », Toast.LENGTH_SHORT) .show();« а затем дайте мне знать, можете ли вы увидеть тост? – Mohsen

ответ

1

Хорошо, давайте проверим коды еще раз;

Как я уже сказал, вам необходимо использовать текущий ActivityContext.

Например, мой Activity имя, MainActivityтак, Использование: MainActivity.this Это должно быть в контексте этой Activity .Но я думаю, что если вы используете свой собственный код (parent.getContext()) внутри другого деятельность, оно не будет отображаться, потому что это где-то еще на самом деле вы знаете

Кроме того, вы сделали что-то здесь не так, я думаю (что-то похож: ArrayAdapter.createFromResource issue)

Я просто цитирую ответ:

запроса данных, поместить его в список или Массив и использовать этот конструктор ArrayAdapter:

ArrayAdapter<CharSequence> dataAdapter1 = new ArrayAdapter(this, 
            android.R.layout.simple_spinner_item, yourArrayOrList); 

Обновление: так вот это:

Spinner myspinner = (Spinner)findViewById(R.id.spinnertype); 
     String provider = myspinner.getSelectedItem().toString(); 

     ArrayAdapter<CharSequence> adapter = 
       new ArrayAdapter<CharSequence>(this, type_arrays, R.layout.support_simple_spinner_dropdown_item); 
       /*ArrayAdapter.createFromResource(this, type_arrays,R.layout.support_simple_spinner_dropdown_item);*/ 

     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     myspinner.setAdapter(adapter); 

     myspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
       Toast.makeText(MainActivity.this, "OnItemSelectedListener :" + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) { 

      } 
     }); 

Теперь это должно сработать!

+0

OHHH MY! это была моя ошибка. На самом деле я создал новый класс java. Я попытался поместить код в свой основной список java, он сработал! спасибо – Sarah

+0

Хорошо! Рад это слышать. Кроме того, вам лучше принять ответ для людей, которые могут иметь такую ​​же проблему в будущем. – Mohsen

3

ли Yout попробовать это, что может помочь вам

Toast.makeText(getApplicationContext(), "OnItemSelectedListener :" + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); 

или

Toast.makeText(YourActivity.this, "OnItemSelectedListener :" + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); 
+0

жаль, что никто из них не работает. я постараюсь выяснить, – Sarah

+0

это сработало! извините за предыдущий комментарий. это действительно зависит от того, где я размещаю код. Спасибо! – Sarah

2

Попробуйте использовать getContext() вместо getApplicationContext.

+0

это сработало, спасибо – Sarah