2017-12-04 2 views
0

내가이 AsyncTask를 호출 목록 요소를 클릭하면 내 UI에 확정해서 ProgressDialog를 추가하기 위해 노력하고있어 후 표시/표시가 아니라 :해서 ProgressDialog는, 불행하게도 단지 AsyncTask를

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    dialog.setProgressStyle(R.style.AppTheme_Dark_Dialog); 
    dialog.setIndeterminate(true); 
    dialog.setMessage(activity.getString(R.string.Buscando)); 
    dialog.show(); 
} 

Obs : 비동기가 Activity 클래스의 하위 클래스가 아니라는 점에 유의해야합니다. 저는 액티비티를 매개 변수로 생성자에 전달하고 있습니다.

가 생성 및 호출하지만 대화는 단순히 전혀 표시되지 않습니다

과 (alredy, 활동 인스턴스가 올바른지 확인)

@Override 
protected void onPostExecute(BuscaPendentesFechamento buscaPendentesFechamento) { 
    super.onPostExecute(buscaPendentesFechamento); 
    if(dialog.isShowing()) 
     dialog.dismiss(); 
} 
난에 대화 상자를 설정 한 경우

대화는이 alredy AsyncTask를 수행하고,이 호출되지 전에 코드에 따른 후에 만하지만, 사용자 인터페이스에 표시
final ProgressDialog progressDialog = new ProgressDialog(RegistraPeso.this, R.style.AppTheme_Dark_Dialog); 
    progressDialog.setIndeterminate(true); 
    progressDialog.setMessage(getString(R.string.Buscando)); 
    progressDialog.show(); 
    BuscaPendentesFechamento exportProjectRequisition = new BuscaPendentesFechamento(getApplicationContext()); 
    response = exportProjectRequisition.execute(nomeEquip,RegistraPeso.this); 
    progressDialog.dismiss(); 

그것이 SHO 같아야 같은 활동 자체 비동기가 시작되기 전에 날개가 만들어집니다.

어떻게해야합니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 도와주세요.

편집은 :

private ProgressDialog dialog; 
private RegistraPeso activity; 
BuscaPendentesFechamento(RegistraPeso activity) { 
    this.dialog = new ProgressDialog(activity); 
    this.activity = activity; 
} 

편집 : 대화 상자가 생성되는 경우 추가되었습니다 doInBackground 추가 :

@Override 
protected BuscaPendentesFechamento doInBackground(String... params) { 
    ArrayList<UmData> jsonArrayResponse = JSONParser.makeHttpRequestArray(
      Constants.URL_PENDENTES_FECHAMENTO, 
      Constants.METHOD_POST, requisition.writeJSON(params[0]), 
      requisition.getContext()); 
    if(jsonArrayResponse!=null) 
    requisition.setJsonArrayResponse(jsonArrayResponse); 
    else { 
     UmData umData = new UmData(); 
     umData.setItemUm("Server not responding"); 
     jsonArrayResponse = new ArrayList<>(); 
     jsonArrayResponse.add(umData); 
     requisition.setJsonArrayResponse(jsonArrayResponse); 
    } 
    return requisition; 
} 
+1

컨텍스트를 AsycTask로 전달하는 코드를 게시하십시오. 왜냐하면 나는 onPreExecute()에서 다이얼로그가 생성되는 것을 보지 못하기 때문이다. – ADM

+0

[this] (https://stackoverflow.com/a/4538370/2910520) 또는 [this] (https://stackoverflow.com/a/3893691/2910520)와 같은 다른 답변을 확인 했습니까? – MatPag

+0

두 번째 솔루션은 가치가있는 일을하지 않기 때문에 쓸모가 없습니다. –

답변

0

응용 프로그램 컨텍스트이 경우 작동하지 않을 것입니다. 난 당신이() 직후 실행 기각 호출하는 코드를 볼 수

BuscaPendentesFechamento exportProjectRequisition = new BuscaPendentesFechamento(YourActivity.this); 

BuscaPendentesFechamento exportProjectRequisition = new BuscaPendentesFechamento(getApplicationContext()); 

아래 라인을 교체합니다(). 이 행을 제거하십시오.

progressDialog.dismiss(); 
+0

고마워,하지만 아무것도 바뀌지 않았다 :(문제가되지 않는 –

+0

) 두 번째 옵션의 경우, 어디에서 실행 (호출) 할 것인지를 묻는 대화 상자가 나타나지 않는다. –

+0

아마 어딘가에 코드에서 엉망이됩니다. asynctask에서 전역으로 활동 참조. 위 코드는 작동해야합니다 .thx – ADM