2017-12-10 20 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

이 회 전자 항목이 선택을 닫습니다 Spinner에 아무런 방법이 없다, 그리고 당신의 스피너를 닫습니다, 당신의 setOnItemSelectedListener

sp.setSelection(int position) 

에 추가하고 당신의에 AlertDialog 생성자을 약간 수정 사용자가 회 전자

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