Android 为什么没有';当我们运行ProgressDialog时,它不会自动显示吗?

Android 为什么没有';当我们运行ProgressDialog时,它不会自动显示吗?,android,json,android-widget,Android,Json,Android Widget,我是Android新手,我一直在做编码来满足我的各种需求 我有一个奇怪的问题,我需要显示进度对话框,以掩盖我从Facebook下载图像的背景工作,并在向量对象中获取图像后在列表视图中显示它们 我的代码是这样的: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

我是Android新手,我一直在做编码来满足我的各种需求

我有一个奇怪的问题,我需要显示进度对话框,以掩盖我从Facebook下载图像的背景工作,并在向量对象中获取图像后在列表视图中显示它们

我的代码是这样的:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        facebook.authorize(this, new String[] { "email", "publish_checkins",
                "user_photos" },

        //new Dialog Listner code

        btnAlb = (Button) findViewById(R.id.btnAlb);
        logout = (Button) findViewById(R.id.logout);

        btnAlb.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {


    //**            Log.i("pDialog","Entry");
        pdialog = ProgressDialog.show(MainActivity.this, "Processing Data","Loading..");
    //this is not working !!
    //**            Log.i("pDialog","Exit");

                try {

    //Lot of JSON Parsing
                    pdialog.dismiss();

                    Intent intent = new Intent(MainActivity.this,AlbumHolder.class);

                    startActivity(intent);

                } catch (Exception e) {
                    e.printStackTrace();
                    pdialog.dismiss();
                }


            }
        });

}
因此,我已经记录了ProgressDialog的开始和结束,并期望对话框显示出来。但事实并非如此。有人能解释一下原因吗


我还使用了runOnUiThread()线程,但它也产生了相同的结果。

您定义进度对话框的方法不正确。像这样试试

 pdialog =new ProgressDialog(mContext);
 pdialog.setMessage("Your message");
 pdialog.show();
这里
mContext
是活动的上下文
并使用
pdialog.disclose()
要解除它

您应该使用pdialog.disclose();任务完成时。对于此问题,应使用AsyncTask类。更多信息

将显示两个连续日志的输出,但不会显示进度对话框。是否正在进行JSON解析?如果不是,则表示按钮的onClick()未被执行。我的日志显示如下:10-01 18:36:37.772:DEBUG/Facebook authorize(6544):登录成功!access\u token=$$expires=$$10-01 18:36:37.822:WARN/InputManagerService(59):窗口已聚焦,忽略:com.android.internal.view.IInputMethodClient$Stub的聚焦增益$Proxy@627f539010-01 18:36:40.752:INFO/pDialog(6544):条目10-01 18:36:40.802:INFO/pDialog(6544):退出10-01 18:36:40.802:DEBUG/Facebook Util(6544):获取URL:没关系。。如果显示日志,则意味着onClick()正在执行。我的JSON解析执行率为100%,因为我已经在其中加载了大量日志。此外,我还可以参加下一个活动并展示我的照片。但是“进度”对话框没有显示出来。这并不是一直都有效。很多时候,当我尝试使用mContext或getApplicationContext()时,会出现空指针,但当我使用Activity.this时,会显示进度对话框。我的Activity的名称是MainActivity。因此,为了创建pDialog中的上下文,我使用了“MainActivity.this”并运行代码。“进度”对话框仍不可见。作为第二种方法,我没有使用上面提到的上下文,而是在MainActivity中创建了一个上下文类变量,并将其传递给pDialog,然后得到一个NullPointerException。此外,在JSON解析工作结束时,我还使用pdialog.disclose()方法来解除PD。请告诉我这种情况有什么问题。pdialog=newprogressdialog(MainActivity.this);在你的情况下应该有用。你能更新你的密码吗,这样我就可以知道里面出了什么问题了?@Vinayshenoy你应该看到这个链接@Antromet我已经尝试了所有可能的答案,但都没有用。对话框必须出现的视图在某种程度上进入了ANR状态,因此完全忽略了我的ProgressDialog请求,即使它完全填充了所有其他处理语句。它根本无法接受弹出对话框。任何解决这个问题的方法都是值得赞赏的。我知道我不能使用线程来解决这个问题,因为我们不能在main/UI线程之外的其他线程中执行任何UI更改。所以请帮我解决我的困境。谢谢你的回复,我终于实现了异步任务,并且发现结果比预期的要多。