在android中获取进度中的错误对话框?

时间:2016-08-24 06:37:19

标签: android progressdialog

我有一个MainActivity,它添加片段“A”,在片段“A”中,我正在使用volley发送一些服务器请求。我创建了一个名为DialogUtil的类,其中包含进度Dialog实现。问题是,当我启动应用程序时在片段“A”中显示“进度”对话框实现中的错误。即

  

java.lang.IllegalArgumentException异常:   查看= com.android.internal.policy.impl.PhoneWindow $ {DecorView 42759d68   V.E ..... R ...... D 0,0-456,144}没有附加到窗口管理器和   变得逼近。

DialogUtil类代码: -

   public class DialogUtils {

    public static ProgressDialog showProgressDialog(Context context, String message) {
        ProgressDialog m_Dialog = new ProgressDialog(context);
        m_Dialog.setMessage(message);
        m_Dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        m_Dialog.setCancelable(false);
        m_Dialog.show();
        return m_Dialog;
    }
}

片段“A”中的进度对话框实现

m_Dialog = DialogUtils.showProgressDialog(getContext(), "Loading...");

        final String m_DealListingURL = "http://202.131.1.132:8080/ireward/rest/json/metallica/getDealListInJSON";
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, m_DealListingURL, jsonObject, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.i(TAG, "Server Response:-" + response);
                if (m_Dialog != null && m_Dialog.isShowing()) {
                    m_Dialog.dismiss();
                }

4 个答案:

答案 0 :(得分:4)

试试这个:

DialogUtils.showProgressDialog(getActivity(), "Loading...");

使用getActivity()而不是getContext()

答案 1 :(得分:1)

你应该使用getActivity()而不是getContext()。

答案 2 :(得分:0)

您是否异步调用该方法?

如果你是,那么很可能,用户在创建对话框的代码运行时退出了上下文(片段,活动或应用程序),这在很多方面都很糟糕。

如果您正在运行AsyncTask,可以通过调用onDestroy AsyncTask s cancel方法来解决此问题,但具体的用例不会从你提供的代码中可以看出来。

答案 3 :(得分:0)

我认为在片段生命周期中调用代码存在问题。请确保在onActivityCreated之后调用对话框。