问题描述
我想显示asyncTask类运行时以相对布局保存的进度条。最初,我使用了扩展类“ AsyncTaskRunner”,并且一切正常,但是当我想对异步使用单独的类时,“。setVisibility”未显示。我可以看到视图的可见性,并且代码可以正常工作,但是我无法在模拟器中观看任何内容。
这是我的代码。
“ AsyncTaskRunner”的首次尝试
private class AsyncTaskRunner extends AsyncTask<String,String,String> {
@Override
protected String doInBackground(String... params) {
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
getwindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
RelativeLayout progressBar = findViewById(R.id.async_progress_bar);
progressBar.setVisibility(View.VISIBLE);
}
});
//.....
runOnUiThread(new Runnable() {
@Override
public void run() {
RelativeLayout progressBar = findViewById(R.id.async_progress_bar);
progressBar.setVisibility(View.INVISIBLE);
getwindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
Button showPlaces = findViewById(R.id.showPlaces);
showPlaces.setVisibility(View.VISIBLE);
}
});
} catch (Exception e) {
Log.v("ErrorAPP",e.toString());
e.printstacktrace();
runOnUiThread(new Runnable() {
@Override
public void run() {
RelativeLayout progressBar = findViewById(R.id.async_progress_bar);
progressBar.setVisibility(View.INVISIBLE);
getwindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
});
}
return "";
}
}
和第二种努力,带有单独的异步类
private void calculatePath(){
try{
runOnUiThread(new Runnable() {
@Override
public void run() {
getwindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
RelativeLayout progressBar = findViewById(R.id.async_progress_bar);
progressBar.setVisibility(View.VISIBLE);
System.out.println("the visibility of progressBar before running is:\t " + progressBar.getVisibility());
}
});
//....
asyncPostClassCorrected aPCC = new asyncPostClassCorrected();
aPCC.url = asyncPostClassCorrected.calculatePathUrl;
aPCC.variables = cred;
recieved = aPCC.execute().get();
//...
runOnUiThread(new Runnable() {
@Override
public void run() {
RelativeLayout progressBar = findViewById(R.id.async_progress_bar);
progressBar.setVisibility(View.INVISIBLE);
getwindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
System.out.println("the visibility of progressBar after running is:\t " + progressBar.getVisibility());
Button showPlaces = findViewById(R.id.showPlaces);
showPlaces.setVisibility(View.VISIBLE);
}
});
}
catch (Exception e){
e.printstacktrace();
}
}
这两个代码都相同,但我不知道为什么第二遍代码不起作用。如印刷品所述,“ progressBar”在代码的第一行中是可见的,在第二步中是可见的,而在代码的最后一行中则是不可见的,但是我无法在模拟器中看到任何内容。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)