2017-01-09 3 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) { 
     } 
    }); 

} 
} 

Ich habe versucht, verschiedene Arten von Toast, aber immer noch erscheinen, es wird nicht. was schief gelaufen ist? Ich sah einige Beiträge und es sagt, dass ich zu einem Spinner verwenden OnClickListener kippeWarum hat mein Toast nicht funktioniert?

+2

'parent.getContext()' sollte es nicht der 'Kontext' der' Activity' sein? Zum Beispiel ist mein 'Activity' Name' MainActivity' ** so, Use **: 'MainActivity.this' Dies sollte der' Kontext' dieser 'Activity' sein. Aber ich denke, wenn Sie Ihren eigenen Code verwenden (' parent.getContext() ') innerhalb der anderen Aktivität, Es wird nicht angezeigt, weil es woanders ist eigentlich Sie wissen .. – Mohsen

+0

@Mohsen, ich habe eine Listview direkt unter dem Spinner. Hat es den Toast abgedeckt oder nur weil ich parent.getContext verwende? – Sarah

+0

Nun, als ich Ihre Codes sah, versuchen Sie einfach, den aktuellen 'Activity'-Kontext anstelle dieses' parent.getContext() 'zu verwenden. Wenn Sie dann den 'Toast' nicht sehen können, müssen Sie die Codes debuggen. Könnten Sie auch versuchen, A SIMPLE TOAST zu verwenden, ohne das Adapterelement zu erhalten? nur: 'Toast.makeText (MainActivity.this," OnItemSelectedListener: ", Toast.LENGTH_SHORT) .show();' dann lassen Sie mich wissen, wenn Sie den Toast sehen können? – Mohsen

Antwort

1

Ok, lassen Sie uns die Codes noch einmal überprüfen;

Wie ich schon sagte, müssen Sie die aktuelle ActivityContext verwenden.

Zum Beispiel, mein Name ist Activity, MainActivityso, Verwendung: MainActivity.this Dies sollte der Rahmen dieser Activity sein .Aber ich denke , wenn Sie Ihren eigenen Code verwenden (parent.getContext()) im Innern der anderen Aktivität, es wird nicht angezeigt, weil sie woanders ist eigentlich Sie

auch wissen, Sie haben hier etwas nicht in Ordnung ich denke, (etwas similiar: ArrayAdapter.createFromResource issue)

Ich zitiere nur die Antwort:

Abfrage die Daten, steckte es in eine Liste oder Array und benutzen Sie diesen Konstruktor ArrayAdapter:

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

Update: Also hier ist:

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) { 

      } 
     }); 

Jetzt sollte es funktionieren!

+0

OHHH MY! es war mein Fehler. Ich habe tatsächlich eine neue Java-Klasse erstellt. Ich habe versucht, den Code in meine Haupt-Java-Liste zu setzen, es hat funktioniert! danke – Sarah

+0

Gut! Froh das zu hören. Auch, Sie sollten besser eine Antwort für die Leute akzeptieren, die das gleiche Problem in der Zukunft haben könnten. – Mohsen

3

yout Lassen Sie sich diese versuchen, das könnte Ihnen helfen

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

oder

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

Entschuldigung keiner von ihnen funktioniert. Ich werde versuchen, herauszufinden, – Sarah

+0

es funktioniert! Entschuldigung für den vorherigen Kommentar. es hängt tatsächlich davon ab, wo ich den Code platziere. Danke! – Sarah

2

Versuchen Sie es mit getContext() anstelle von getApplicationContext.

+0

es hat funktioniert, danke – Sarah