2012-07-21 5 views
0

이 테마에는 여러 가지 변형이있는 것으로 보입니다. 이 항목을 저장 하시겠습니까? 사용자에게 AlertBox을 표시합니까? 그들이 OK로 응답하면 Alertbox이 떨어져 나가고 ProgressDialog 상자로 바뀌고 항목이 저장이 끝나면 해제됩니다.Android AlertBox, ProgressDialog. ProgessDialog가 표시되지 않음

아래 코드는 Ok/Cancel AlertBox을 보여 주며 올바르게 닫고 토스트를 올바르게 보여줍니다. 그러나 사용자가 OK를 선택하면 결국 ProgressDialog이 표시되고 절대로 사라지지 않습니다. 확인/취소 버튼은 항목이 저장 될 때까지 계속 누릅니다. 사용자가 확인을 누르면 AlertBox을 사라지게하고 ProgressDialog을 표시하고 저장이 끝나면 닫습니다.

{ 
Vibrate(ClickVibrate); 
final ProgressDialog Dialog = ProgressDialog.show(v.getRootView().getContext(), "Loading", "Please wait...", true); 
if(AlertDialogProcessing==0) 
{  
ProgressDialog progress; 
final String title="Save Item"; 
final String message="Press OK to save or CANCEL."; 
final String ok="OK"; 
final String cancel="CANCEL"; 

final AlertDialog.Builder alertbox = new AlertDialog.Builder(this); 
alertbox.setCancelable(true); 
alertbox.setIcon(android.R.drawable.ic_dialog_alert); 
alertbox.setTitle(title); 
alertbox.setMessage(message); 
alertbox.setNegativeButton(cancel, null); 

final AlertDialog dlg = alertbox.create(); 

alertbox.setPositiveButton(ok,new DialogInterface.OnClickListener() 
    { 
    public void onClick(DialogInterface arg0, int arg1) 
    { 
     dlg.dismiss(); 
     Dialog.show(); 
     Vibrate(ClickVibrate); 
     Drawable drawable= getItem(imageSelect); 
     AlertDialogProcessing=1; 
     //task that takes 3 seconds 
     AlertDialogProcessing=0; 
     Toast.makeText(getApplicationContext(), "Item Saved.", Toast.LENGTH_LONG).show(); 
    } 
    }); 
alertbox.setNegativeButton(cancel,new DialogInterface.OnClickListener(){ public void onClick(DialogInterface arg0, int arg1){AlertDialogProcessing=0; Vibrate(ClickVibrate); } }); 
alertbox.show(); 
} 
Dialog.dismiss(); 
} 

답변

1

당신은 긍정적 인 버튼의 onClick() 내부 모두 ProgressDialog.show()ProgressDialog.dismiss()를 호출하고, 더 궁금 ProgressDialog는 표시되지 않습니다. 저장 프로세스에 ProgressDialog이 필요하다면 AsyncTask 클래스를 사용하는 것이 좋습니다. 그것은 작업자 스레드에서 작업을 실행하고 현재 작업 진행 상황으로 UI를 업데이트 할 수있는 가능성을 제공합니다. 희망이 도움이됩니다.

+0

아직 마스터링 된 비동기가 없습니다. 다른 일을하기 위해 기다리는 시간은 괜찮습니다. 코드를 어떻게 구성해야합니까? 내가 가지고있는 것을 보여주기 위해 코드를 수정했습니다. – user1445716

+0

@ user1445716, 앱 저장 프로세스에 대해 설명하십시오. – Egor

+0

내가 제안한대로 Asynch가이를 수행하기로 결정했습니다. 시원한. 나는 여기에 질문과 내 최종 답변을 게시 [링크] (http://stackoverflow.com/questions/6494002) – user1445716