Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对话:为什么?_Java_Android - Fatal编程技术网

Java 对话:为什么?

Java 对话:为什么?,java,android,Java,Android,我想打开一个进度对话框,然后在MainActivity的onCreate方法中放入以下代码 ProgressDialog.show(MainActivity.this, "", "Loading..."); 但在那之后,我会消失ProgressDialog,然后我把 progressDialog.dismiss(); 但是eclipse告诉我:“不能从类型对话框中静态引用非静态方法disclease()”为什么?这个片段是 if(check.isDeviceConnected())

我想打开一个进度对话框,然后在MainActivity的onCreate方法中放入以下代码

ProgressDialog.show(MainActivity.this, "", "Loading...");
但在那之后,我会消失ProgressDialog,然后我把

progressDialog.dismiss();
但是eclipse告诉我:“不能从类型对话框中静态引用非静态方法disclease()”为什么?这个片段是

if(check.isDeviceConnected())
        {
            sincro = new Synk(this);
            sincro.start();
            ProgressDialog.show(MainActivity.this, "", "Loading");

            }

基本上,我希望ProgressDialog在同步后消失,因此我认为ProgressDialog.disease()必须设置为}

您需要捕获对ProgressDialog的引用:

ProgressDialog myDialog = ProgressDialog.show(MainActivity.this, "", "Loading...");
然后你可以做:

myDialog.dismiss();

这需要这样做,因为
dislose()
不是静态方法,必须对对象调用它。相反,
show(…)
是一个静态方法,因此可以直接调用它。(没有对象。)

您需要捕获对ProgressDialog的引用:

ProgressDialog myDialog = ProgressDialog.show(MainActivity.this, "", "Loading...");
然后你可以做:

myDialog.dismiss();

这需要这样做,因为
dislose()
不是静态方法,必须对对象调用它。相反,
show(…)
是一个静态方法,因此可以直接调用它。(没有对象。)

以这种方式使用ProgressDialog

用于初始化
ProgressDialog

 ProgressDialog dialog = new ProgressDialog(YourActivity.this);
        dialog.setMessage("Loading...");
        dialog.setCancelable(false);
 dialog.dismiss();
初始化后显示进程对话框

 dialog.show();
用于解除
ProgressDialog

 ProgressDialog dialog = new ProgressDialog(YourActivity.this);
        dialog.setMessage("Loading...");
        dialog.setCancelable(false);
 dialog.dismiss();

以这种方式使用ProgressDialog

用于初始化
ProgressDialog

 ProgressDialog dialog = new ProgressDialog(YourActivity.this);
        dialog.setMessage("Loading...");
        dialog.setCancelable(false);
 dialog.dismiss();
初始化后显示进程对话框

 dialog.show();
用于解除
ProgressDialog

 ProgressDialog dialog = new ProgressDialog(YourActivity.this);
        dialog.setMessage("Loading...");
        dialog.setCancelable(false);
 dialog.dismiss();

您应该更改为这样:

if(check.isDeviceConnected())
    {
        sincro = new Synk(YourActivity.this);
        sincro.start();
        ProgressDialog mydialog = null;
        mydialog = ProgressDialog.show(MainActivity.this, "", "Loading");

        }
然后你必须把:

        mydialog.dismiss();

您应该更改为这样:

if(check.isDeviceConnected())
    {
        sincro = new Synk(YourActivity.this);
        sincro.start();
        ProgressDialog mydialog = null;
        mydialog = ProgressDialog.show(MainActivity.this, "", "Loading");

        }
然后你必须把:

        mydialog.dismiss();

很好,但是如果我想让它像我一样在Synk之后消失,那么您很可能会将
myDialog
设置为一个字段(如果需要),并在任何您想要消除它的地方调用
myDialog.dismise()
。这可能意味着您必须在线程内使用
View.post()
Activity.runOnUiThread()
,以便在ui线程上调用disclose。很好,但是如果我想让它在Synk之后像我一样消失,那么您很可能会将
myDialog
设置为一个字段(如果需要),并调用
myDialog.disclose()
无论您想在哪里取消它。这可能意味着您必须在线程内使用
View.post()
Activity.runOnUiThread()
,以便在ui线程上调用dismise。