我正在开发一个Android应用程序,我需要从互联网上获取数据。 我在Homepage.java中声明了一个“私有进度对话框”。 在onCreate()方法中,调用函数
dialog = ProgressDialog.show(Homepage.this, "Connecting", "Please wait for a while...", true);
创建另一个线程来获取数据,并在finally块中调用
"dialog.dismiss()"
整个onResume()代码如下所示。
@Override
protected void onResume(){
super.onResume();
Log.e(TAG, "onResume");
dialog = ProgressDialog.show(Homepage.this, "Connecting", "Please wait for a while..", true);
/******Start fetching data.******/
Thread getDataThread = new Thread() {
@Override
public void run() {
try {
try {
getData();
} catch (JSONException e) {
alert_error();
e.printStackTrace();
} catch (IOException e) {
alert_error();
e.printStackTrace();
} finally {
dialog.dismiss();
}
} catch (SQLException e) {
alert_error();
e.printStackTrace();
} catch (ExecutionException e) {
alert_error();
e.printStackTrace();
} catch (InterruptedException e) {
alert_error();
e.printStackTrace();
}finally{
dialog.dismiss();
}
}
};
getDataThread.start();
}
起初,这很有效。(微调器显示) 但在某些时候(我不记得什么时候),对话框仍然有效,但是旋转器消失了 显示如下(标有红线的地方应该是微调器显示的地方) Spinner is gone
对话框仍然有效,但所有ProgressDialog都在这个应用程序的任何地方调用,微调器消失了。(甚至没有出现)
如果我将获取数据从互联网部分更改为睡眠状态10秒 如下所示
@Override
protected void onResume(){
super.onResume();
Log.e(TAG, "onResume");
dialog = ProgressDialog.show(Homepage.this, "Connecting", "Please wait for a while...", true);
/******Start fetching data.******/
Thread getDataThread = new Thread() {
@Override
public void run() {
try {
sleep(10*1000);
} catch (InterruptedException e) {
e.printStackTrace();
dialog.dismiss;
}
}
};
getDataThread.start();
}
旋转器仍未出现。
我认为这可能与我的项目中的全局设置或值有关,我只使用super.onCreate和setContentView之外的一个方法创建一个空活动 我打了电话 “ProgressDialog对话框= ProgressDialog.show(Homepage.this,”123“,”456“,true);”
并且旋转器仍然没有显示出来!
但是如果我创建一个新项目并添加了相同的代码,它就可以了!
提前致谢!
答案 0 :(得分:3)
我认为问题出在您的手机设置中,我曾遇到过同样的问题,您需要做的是:
转到手机设置中的开发者选项。
启用过渡(在我的情况下,我关闭它们以使手机快速行动)
重新启动应用程序,希望spinner会在那里。
<强>更新强>
或者您可以为此目的尝试像Material Dialogs这样的图书馆,这是我最喜欢的图书馆之一,您需要做的就是
编译
compile 'com.afollestad.material-dialogs:core:0.8.6.0'
然后在哪里显示对话框
new MaterialDialog.Builder(this)
.title(R.string.progress_dialog)
.content(R.string.please_wait)
.progress(true, 0)
.show();
您可以找到更多信息here以进一步自定义和使用详情。
希望有所帮助