2014-09-16 5 views
0

제 신청서에는 고객을 저장해야하는 시점이 있습니다.Waiting Dialog.OnClickListener onClick 응답

모든 필드에 값이 있는지 확인한 다음 누군가가 비어 있으면 부울 값을 다시 보내고 고객 저장 여부에 따라 대화 상자를 프롬프트해야합니다.

private boolean canBeSaved(ArrayList<View> viewList) { 
    if (!viewList.isEmpty()) { 
     showErrorDialog(); 
     for (View v : viewList) { 
      ((EditText) v).setError("errorMsg"); 
      v.requestFocus(); 
     } 
     return false; 
    } else { 
     return true; 
    } 
} 

private void showErrorDialog() { 
    QustomDialogBuilder saveDialog = new QustomDialogBuilder(this); 
    saveDialog.setTitle("ATTENZIONE!"); 
    saveDialog.setMessage(Constants.CANT_SAVE); 
    saveDialog.setNeutralButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 
    saveDialog.show(); 
} 

하지만 showErrorDialog();을 실행 한 후 나는 흐름을 다시 시작 onClick 이벤트를 기다릴 수

여기 내 코드입니다.

나는 순간에있어 흐름은 다음과 같습니다 showErrorDialog() -> dialog.show() -> canBeSaved의 나머지 (..)

내가 원하는 흐름은 다음과 같습니다 showErrorDialog() -> dialog.show() ->대기 onClickEvent -> 나머지 canBeSaved (..)

이게 가능합니까 아니면 달을 구하고 있습니까? 나는 모든 것을 잘못하고있다?

+1

같은 모달 대화 상자가 안드로이드 방법이 아니다. 'onClick()'대화 상자에서 원하는 것을 수행하는 리스너를 시작할 수 있도록 디자인을 변경하십시오. http://stackoverflow.com/questions/2028697/dialogs-alertdialogs-how-to-block-execution-while-dialog-is-up-net-style – laalto

+0

당신의 솔루션에 대해 모두 감사드립니다 ...하지만 나는 겁쟁이 : 나는 토스트 만 보여주는 모든 것을 해결했다 ... – Luca

답변

1

나는 모든 DialogInterface에 익숙한 아니에요하지만 난 싶은 것은 생각 :

private void showErrorDialog() { 
final QustomDialogBuilder saveDialog = new QustomDialogBuilder(this); //add final 
saveDialog.setTitle("ATTENZIONE!"); 
saveDialog.setMessage(Constants.CANT_SAVE); 
saveDialog.setNeutralButton("OK", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     saveDialog.dismiss(); //change to saveDialog 
    } 
}); 
saveDialog.show(); 
} 
1
private boolean canBeSaved(ArrayList<View> viewList) { 
    if (!viewList.isEmpty()) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("ATTENZIONE!") 
      .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        // Handle Ok 
         for (View v : viewList) { 
          ((EditText) v).setError("errorMsg"); 
          v.requestFocus(); 
         } 
         saveDialog.dismiss(); 
         return false; 
       } 
      }) 
      .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        // Handle Cancel 
        saveDialog.dismiss(); 
        return false; 
       } 
      }).create(); 

    } else { 
     return true; 
    } 
} 
+0

나는 이미 이와 같은 것을 시도했지만 customDialog는 .dismiss()를 가지고 있지 않다. ... – Luca

+0

내 코드를 편집 했으니 그냥 로직을 살펴 보자. , 거기에 몇 가지 오류가있을 수 있습니다 –

관련 문제