2017-12-10 22 views
0

私はスピナー付きのダイアログを持っています。現在、ダイアログとスピナーは正常に動作しています。しかし、アイテムを選択するとスピンナーが閉じることはありません。私はそれを閉じて、アイテムが選択された後に活動に戻る必要があります。ありがとう。ユーザーがスピナーからアイテムを選択した後にダイアログを閉じるにはどうすればいいですか?

ここに私のダイアログのコードがあります。

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(); 

答えて

0

スピナー項目が選択されている場合、それを閉じるために、そしてそれは、あなたのスピナーを閉じて、あなたのsetOnItemSelectedListener

sp.setSelection(int position) 

に追加して、ちょうどあなたのAlertDialogコンストラクタは少し変わりますSpinnerには方法がありませんユーザーがあなたのスピナー

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

アイテムを選択しても閉じられません。ダイアログがまだ宣言されていないので、スピナー選択メソッド内でbuilder.dismiss()を呼び出すにはどうすればよいですか。 – Julia

+0

@Juliaよく、それはそれ自身を閉じて、ダイアログを閉じることで十分でしょうか?最初にダイアログを作成し、次にそれにスピナーを追加すると、ダイアログが閉じられ、スピナーが表示され、実際に呼び出されたアイテムとOnItemSelectedメソッドをクリックしてダイアログが既に初期化されています。多分あなたはダイアログのインスタンシエーションを変更する必要があります....私は答えを更新します。それが動作すれば教えてください – Rainmaker

0

この

を試してみてください内の項目を選択した後、AlertDialogを却下する alert.dismiss();を置きます
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(); 
関連する問題