2017-12-10 11 views
0

Ich habe einen Dialog mit einem Spinner. Momentan funktioniert der Dialog und die Spinner gut. Der Spinner wird jedoch nicht geschlossen, nachdem ich einen Artikel ausgewählt habe. Ich brauche es, um nah zu sein und zu der Aktivität zurückzukehren, nachdem ein Gegenstand ausgewählt wurde. Vielen Dank.Wie schließe ich ein Dialogfeld, nachdem der Benutzer ein Element aus einem Drehfeld ausgewählt hat?

Hier ist der Code für meinen Dialog.

String[] s = {"A", "B", "C", "D", "E", "F" }; 

     final ArrayAdapter<String> adp = new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_spinner_item, s); 

     final Spinner sp = new Spinner(getActivity()); 
     //sp.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     sp.setAdapter(adp); 

     sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
     { 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
      { 
       String selectedItem = parent.getItemAtPosition(position).toString(); 
       Log.d("selectedItem:", selectedItem); 

      } // to close the onItemSelected 
      public void onNothingSelected(AdapterView<?> parent) 
      { 

      } 
     }); 

     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setView(sp); 
     builder.create().show(); 

Antwort

0

Es gibt keine Methode auf Spinner um es zu schließen, wenn spinner Element ausgewählt ist, und das wird Ihre Spinner schließen, fügen Sie Ihre setOnItemSelectedListener

sp.setSelection(int position) 

und dann einfach Ihr ein wenig Alertdialog Konstruktor ändern , legte alert.dismiss(); den Alertdialog zu entlassen, nachdem Benutzer ein Element in Ihren Spinnern

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setView(sp); 
    final AlertDialog alert = builder.create(); 
    alert.show(); 
+0

Wenn ich ein Element ausgewählt habe, wird es nicht geschlossen. Wie rufe ich die builder.dismiss() in der Spinnerauswahlmethode auf, da der Dialog noch nicht deklariert wurde. – Julia

+0

@Julia gut, sollte es sich selbst schließen, dann wird vielleicht der Dialog wird ausreichen? Sie können den Dialog onItemSelected beim ersten Erstellen eines Dialogfelds und anschließendem Hinzufügen eines Drehfelds schließen. Erst dann wird der Drehfeld angezeigt und der Benutzer kann auf ein Element klicken und die Methode OnItemSelected wird aufgerufen, sodass das Dialogfeld bereits initialisiert wird. Vielleicht solltest du deine Instanziierung im Dialog ändern ... Ich werde die Antwort aktualisieren. Lass mich wissen ob es funktioniert – Rainmaker

0

wählen Versuchen Sie, diese

final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    final Spinner sp = new Spinner(getActivity()); 
    sp.setAdapter(adp); 

    sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    { 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
     { 
      String selectedItem = parent.getItemAtPosition(position).toString(); 
      Log.d("selectedItem:", selectedItem); 
      builder.dismiss(); 

     } // to close the onItemSelected 
     public void onNothingSelected(AdapterView<?> parent) 
     { 

     } 
    }); 

    builder.setView(sp); 
    builder.create().show(); 
Verwandte Themen