0

サーバーのデータを取得している間、表示ProgressDialogしようとしています。ロードしているユーザーのリストビューがあり、 を使用してAsyncTaskデータを取得し、 に processDialog を作成しますpreExecute()。問題は、リストが 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);        

        ...
}

これは、サーバーに接続して作成する AsycTask です。ProgressDialog

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();
        }   
    }

}
4

0 に答える 0