2017-08-29 236 views
1

我有一个调用第二个java类的活动。我希望在第二个类被调用后显示一个进度条,然后返回到正常的活动执行。我发现了其他一些线程,但我无法让进度条停止。如何在android中启动和停止progressbar?

+1

能不能请你你的代码 – MrAppMachine

+0

你需要使用progressdialog –

+1

,所以你可以简单地使用'Visibility'走了,可见 –

回答

3

有超过here一个完整的例子。

报价:

声明你的进度对话框:

ProgressDialog progress; 

当你准备好开始进度对话框:

progress = ProgressDialog.show(this, "dialog title", 
    "dialog message", true); 

,并把它赶走你的时候're done:

progress.dismiss(); 

这里有一个小螺纹例子给你:

// Note: declare ProgressDialog progress as a field in your class. 

progress = ProgressDialog.show(this, "dialog title", 
    "dialog message", true); 

new Thread(new Runnable() { 
    @Override 
    public void run() 
    { 
    // do the thing that takes a long time 

    runOnUiThread(new Runnable() { 
     @Override 
     public void run() 
     { 
     progress.dismiss(); 
     } 
    }); 
    } 
}).start(); 

ProgressDialog已过时,所以你可能需要使用一个进度条。我找到了this post关于删除其中之一。

嗯,我认为这很荒谬,但这里是我如何修复它。

在我的xml为ProgressBar,我添加了android:visibility="gone" 默认情况下隐藏它。然后,在我的代码中,我首先告诉它在试图获取服务器列表之前显示 (View.VISIBLE),然后我告诉 它在完成后隐藏(View.GONE)。这工作(我可以看到 进度指示器,而数据加载,然后它消失了)。所以 我想我无法让它隐藏在代码中,因为代码是 而不是强迫它以可见开始......这对我来说就像是一个 的错误。

+0

谢谢你的提示,@Pavneet_Singh。我会做更多的研究并编辑我的答案。 – RubbelDieKatz

+1

谢谢你,这工作正常。假设我想在解散进度条以使其在额外的20秒内可见(代码在本地主机中运行速度过快),以使用户知道某事正在进行中。我怎样才能做到这一点? –

+0

@tzimhspanousis,这可能是一个额外的问题。发布你的代码。 – RubbelDieKatz

1

它非常简单:

展现出进步

ProgressDialog dialog = ProgressDialog.show(getContext(), "Title", "Message"); 

,并阻止它:

dialog.dismiss(); 
+1

'ProgressDialog'已被弃用,因此'ProgressBar'问题 –

+1

已被弃用?所以呢?你知道'Thread.stop()'也被弃用,因为我已经开始编程?只要有很多4.X设备出现,它就会保证能够继续工作。 –

+1

'那么什么?''Thread.stop()'也被弃用,这就是为什么没有人使用它,它是在Android的建议,尽可能避免不推荐使用的版本,并可能最知道进展对话框开始和停止,但你不能做同样的与进度条因此问题 –