从另一个Dialog显示ProgressDialog

时间:2013-05-14 09:43:36

标签: android android-asynctask progressdialog

我在获取服务器的数据时尝试显示ProgressDialog。 我有一个listview用户我正在加载的内容,我使用AsyncTask来获取我的数据,并在preExecute()中创建了一个processDialog。我想问题是我的列表在DialogFragment中。 如果我在ProgressDialog中创建onCreateView(),我也无法看到它,但它在另一个对话框下方。我不知道是否可以优先考虑对话,因为当我对活动做同样的事情时,我没有任何问题。

public class ListUsersDialog extends AbstractDialog {

    private ListView lv;     
    private CustomUsersAdapter adapter;    
    private List<UserResponse> usersList;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.dialog_list_users, container);

        //Se consulta por la lista de los usuarios, los parametros que se pasan es por si se quiere customizar el resultado en el futuro.
        AsyncGUI asyncDialogs = new AsyncGUI(this);
        asyncDialogs.execute(new RequestMessage(ConstantsRooms.GET_USERS, ((AbstractActivity)getActivity()).getUserName(), room));      
        getDialog().setTitle("Invitar a usuarios");

         // Listview Data     
        lv = (ListView) view.findViewById(R.id.list_view_users);
        inputSearch = (EditText) view.findViewById(R.id.inputSearch);
        checkFilterFriend = (CheckBox) view.findViewById(R.id.checkFilterFriend);

        usersList = new ArrayList<UserResponse>();
        adapter = new CustomUsersAdapter(usersList, (AbstractActivity)getActivity());
        lv.setAdapter(adapter);        

        ...
}

这是我与服务器连接并创建ProgressDialog

的AsycTask
public class AsyncGUI extends
        AsyncTask<RequestMessage, Object, Void> {


    private Updatable gui;
    private ProgressDialog pDlg;

    public AsyncGUI(Updatable gui) {        
        this.gui = gui;
    }

    .....

    @Override
    protected void onProgressUpdate(Object... values) {     
        gui.updateGUI(values[0]);       
    }

    @Override
    protected void onPostExecute(Void result) {     
        super.onPostExecute(result);
        if (pDlg != null){
            pDlg.dismiss();
        }
    }

    @Override
    protected void onPreExecute() {
        showProgressDialog();
    }

    /*
     * Muestra una pantalla de espera mientras se hace el procesamiento de datos..
     */
    private void showProgressDialog() {

        if (gui != null){
            pDlg = new ProgressDialog(gui.getContext());
            pDlg.setMessage("Espere por favor..");
            pDlg.setProgressDrawable(gui.getContext().getWallpaper());
            pDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            pDlg.setCancelable(false);
            pDlg.show();
        }   
    }

}

0 个答案:

没有答案