2014-06-11 3 views
0

사용자가 AlertDialog에서 "확인"단추를 클릭 할 때 ProgressDialog를 표시하려고합니다. 그러나 현재 코드에서는 ProgressDialog가 전혀 표시되지 않습니다. 또한 AlertDialog는 버튼 클릭 후 닫아야하고 ProgressDialog가 표시되어야합니다. 지금에 AlertDialog 버튼을 클릭 한 후 일축했지만해서 ProgressDialogAlertDialog 단추에 ProgressDialog 표시

여기

내 코드가 표시되지 않습니다 : -

case R.id.btnAddComms: 
      scrollNews.fullScroll(v.FOCUS_DOWN); 
      btnAddComms.setPressed(true); 

      AlertDialog.Builder builder = new AlertDialog.Builder(NewsDetails.this); 
      builder.setTitle("Post"); 
      builder.setIcon(R.drawable.post); 


      final EditText input1 = new EditText(NewsDetails.this); 
      LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.MATCH_PARENT); 

      input1.setLayoutParams(lp); 
      builder.setView(input1); 


      builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() 
      { 

       public void onClick(DialogInterface dialog, int id) 
       { 


        postedComment = input1.getText().toString(); 

        if(postedComment.length()>0) 
        { 
         dialog.dismiss(); 
         ProgressDialog pd = new ProgressDialog(NewsDetails.this); 
         pd.setMessage("test"); 
         pd.show(); 
         pd.setCancelable(true); 
         PostComments(postedComment); 
         pd.dismiss(); 

        } 
        else 
        { 
         Toast.makeText(NewsDetails.this, "Please enter a comment.", Toast.LENGTH_LONG).show(); 
         input1.findFocus(); 
        } 






       } 
.setCancelable(false); 



      alert = builder.create(); 
      alert.setCanceledOnTouchOutside(true); 

      alert.show(); 
      break; 

내가 할 수있는 방법에 대한 아이디어. 버튼을 클릭하면 모든

+1

버튼 클릭시 즉시 진행 대화 상자를 닫은 상태입니다. PostComments가하는 일을 잘 모르지만 해결 방법을 찾아야합니다. PostComment가 실행 된 후에 대화 상자가 닫혀 야한다고 생각합니까? pdfclose()는 PostComments가 실행될 때까지 기다리지 않습니다. – Opiatefuchs

+0

@Opiatefuchs Iam이 ALertDialog 인'dialog'를 닫습니다. PostComments에서 API 호출을하고 있습니다. – user3713706

+0

'pd.dismiss();를 제거해보십시오. – Aniruddha

답변

1
runOnUiThread(new Runnable() { 

         @Override 
         public void run() { 
          PostComments(postedComment); 
         } 
        }); 
+0

위 코드에서 이것을 어떻게 사용합니까? 설명 할 수 있습니까? – Nithinlal

+0

@Digvesh 이것은 내가 묻고있는 것이 아니다. – user3713706

+0

메소드가 실행되는 동안 UI가 "고정"될뿐만 아니라, 일반적으로 나쁜 습관 일뿐만 아니라 메소드가 실행되기 때문에 앱이 다운된다 네트워크 작업, 당신은 UI 스레드에서 할 수 없어 – orenk86

0

첫째, ...가 해당 코드를 실행 완료되기 전에 당신이 대화 자체를 제거하지 않습니다 ... 호출되는 코드의 끝에 dialog.dismiss(); 이동 다음 표시 한 직후 진행률 대화 상자를 닫습니다. 클래스의 상단에 ProgressDialog pd;와 라인 변경 :

ProgressDialog pd = new ProgressDialog(NewsDetails.this); 

에 : 나는 선을 배치하여 전역 대화 진행을 선언 제안

pd = new ProgressDialog(NewsDetails.this); 

그리고 마지막을에서 pd.dismiss(); 줄을 제거 단추가 클릭 될 때 코드가 호출되어 PostComments(postedComment); 메서드의 끝 부분에 배치되므로 메서드가 완료 될 때 진행 대화 상자를 제거합니다. 메서드가 API 호출을 실행한다고 언급했습니다. ASyncTask에있는 경우 onPostExecute 부분에 pd.dismiss(); 행을 추가합니다. 행운을 빈다! :)

--- 편집 ---

확인 후 더 나은 손에서 문제를 이해, 당신은 또한뿐만 아니라 글로벌 귀하의 경고 상자 빌더를 선언 정의하고 그것을 보여주는 시도 할 수 있습니다 "확인"버튼의 onClickListener를 호출하고 PostComments(postedComment); 메소드 끝 부분에서이를 닫습니다 (진행 대화 상자에서했던 것과 똑같이). 이것은 효과가있다.

Btw, 나는 그 안에 이미 진행률 표시 줄이있는 내 자신의 사용자 지정 대화 상자를 디자인하기 위해 화면에 2 개의 대화 상자를 한 번에 갖는 대신 개인적으로 선호합니다. 그런 다음 View.setVisibility(View.GONE/View.VISIBLE/View.INVISIBLE) 방법을 사용하여 진행률 표시 줄을 표시하고 사라지게하십시오. 물론, 당신은 여전히 ​​전역 적으로 그것을 선언하고 PostComments(postedComment); 메소드의 끝에서 그것을 무시해야 할 것이지만, 코드와 사용자 모두에서 좀 더 깔끔하게 보일 것입니다. Android Developers website에는 맞춤 대화 상자를 만드는 방법에 대한 설명이 있습니다. 충분하지 않다면 말해 주면 예제를 제공해 드리겠습니다.

+0

나는 당신이 말한 것을 시도했다. 그러나 경고 상자가 닫히고 버튼 클릭이 아닌 후에 진행 대화 상자가 표시됩니다. – user3713706

+0

내가하려는 일에 오해가 있었을 것입니다. 진행 상태 대화 상자가 표시되어있는 동안 경고 상자를 그대로두고 "의견 게시"방법이 끝나면 경고 상자를 닫으시겠습니까? – orenk86

+0

예 thats 정확히 내가 원하는 것 – user3713706