0

我試圖管理一個AsyncTask中的不同任務,使用dialogFragment更新progressDialog。 除了不確定模式之外,我對進展所做的每件事情都是正確的。ProgressDialog未設置不確定模式onProgressUpdate

這是的AsyncTask內的流動的一個例子:

Map<String,String> map = new HashMap<String,String>(); 
map.put("progress", "0"); 
map.put("indeterminate", "n"); 
map.put("text","Download tab1"); 
map.put("max",""+tab_size); 
publishProgress(map); 

map.clear(); 
for(int i=0;i<tab_size;i++){  
    map.put("progress", ""+i); 
} 

map.clear(); 
map.put("progress", "0"); 
map.put("indeterminate", "y"); // DOES NOT WORK! 
map.put("text","Extract tab1"); 
map.put("max","0"); 
publishProgress(map); 


    @Override 
protected void onProgressUpdate(Map<String,String>... values) { 
    Map<String,String> map = values[0]; 
    if(map.containsKey("progress")) 
     fragment.setActual(Integer.parseInt(map.get("progress"))); 
    if(map.containsKey("max")) 
     fragment.setMax(Integer.parseInt(map.get("max"))); 
    if(map.containsKey("text")) 
     fragment.setText(map.get("text")); 
    if(map.containsKey("indeterminate")){ 
     boolean ind = map.get("indeterminate").equals("y"); 
     fragment.setIndeterminate(ind); 
} 

其中片段是:

public class PropDialogFragment extends DialogFragment { 

    public static Dialog dialog; 

    private static PropDialogFragment newInstance() { 
     PropDialogFragment f = new PropDialogFragment(); 
     return f; 
    } 
    public static PropDialogFragment showUpdatesDialog(Activity activity){ 
     FragmentTransaction ft = activity.getFragmentManager().beginTransaction(); 
     Fragment prev = activity.getFragmentManager().findFragmentByTag("updateDialog"); 
     if (prev != null) 
      ft.remove(prev); 

     ft.addToBackStack(null); 

     DialogFragment newFragment = newInstance(); 
     newFragment.show(ft, "updateDialog"); 
     return (PropDialogFragment)newFragment; 
    } 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final ProgressDialog dialog = new ProgressDialog(getActivity()); 
     dialog.setTitle("Update"); 
     dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     dialog.setMessage(""); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(false); 
     dialog.setCanceledOnTouchOutside(false); 
     return dialog; 
    } 

    public void setText(String text){ 
     ((ProgressDialog)getDialog()).setMessage(text); 
    } 
    public void setIndeterminate(boolean indeterminate){ 
     ((ProgressDialog)getDialog()).setIndeterminate(indeterminate); 
    } 
    public void setMax(int max){ 
     ((ProgressDialog)getDialog()).setMax(max); 
    } 
    public void setProgress(int progress){ 
     ((ProgressDialog)getDialog()).setProgress(progress); 
    } 


} 
+0

將這個'dialog.setIndeterminate(true)'設置爲'dialog.setIndeterminate(false)' – Raghunandan

+0

沒有任何變化。 – JackTurky

+0

http://stackoverflow.com/questions/1727 2062 /機器人正在進行的對話中僅更新管理消息未在杆和 - 所述線/ 17272239#17272239。類似的問題 – Raghunandan

回答

1

我解決了避免酒吧時需要去不確定模式設置進度值: )