2011-04-07 7 views
2

내 메뉴의 특정 옵션이 호출되면 AlertDialog를 호출하려고합니다. 사용자가 선택한 것은 인터넷의 XML 페이지에 매개 변수로 전달하는 것이 중요합니다.메뉴 옵션에서 전화를 걸면 Android AlertDialog가 표시되지 않습니다.

나는 다음을 시도했지만 AlertDialog가 결코 표시하지 않으면 바로 다음 활동으로 넘어 간다.

@Override 
    public boolean onOptionsItemSelected(MenuItem item) {  
     // Handle item selection  
     switch (item.getItemId()) {  
     case R.id.kantoor: 
      //Opent de office activity 
      final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); 
      String arbeiderbed = pref.getString("ArbeiderBediende", ""); 

      if(arbeiderbed.equals("")){ 
       final CharSequence[] beroep = {"Arbeider","Bediende"}; 

       AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setTitle("Kies uw statuut"); 
       builder.setSingleChoiceItems(beroep, -1, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         // TODO Auto-generated method stub 
         if (beroep[which].equals("Arbeider")){ 
          SharedPreferences.Editor editor = pref.edit(); 
          editor.putString("ArbeiderBediende", "arbeider"); 
          editor.commit(); // Very important 
         } 
         else{ 
          SharedPreferences.Editor editor = pref.edit(); 
          editor.putString("ArbeiderBediende", "bediende"); 
          editor.commit(); // Very important 
         }       
        } 
       }); 
       builder.create().show(); 

      } 
      Intent office = new Intent(MainActivity.this, Settings.class); 
      startActivity(office); 
      return true; 

답변

0

물론 그렇습니다. 경고 대화 상자는 모달이 아니므로 show() 메서드는 추가 코드의 실행을 차단하지 않습니다. 대화 상자가 닫힐 때 액티비티를 시작하려면 대화 버튼의 클릭 리스너에 startActivity() 등의 호출을 넣어야합니다.

+0

확인. 그러나 사용자가 자신의 설정에서 이미 자신의 선택을 지정했을 수 있습니다. 그래서 SharedPreferences를 호출합니다. 지정되어있는 경우 앱은 AlertDialog를 팝업하지 않고 Activity를 실행해야합니다. – Hannelore

+0

코드를 복제하지 않고 이것을 수행 ... – Hannelore

+0

잘 누른 다음, 활동을 호출하는 코드를 메소드로 추출하고 해당 메소드를 호출하십시오. 이 메소드를 호출하는'else' 브랜치도 있어야합니다. –

관련 문제