ProgressBar 未显示在 AsyncTask 中
Posted
技术标签:
【中文标题】ProgressBar 未显示在 AsyncTask 中【英文标题】:ProgressBar not showing in AsyncTask 【发布时间】:2016-12-19 17:15:04 【问题描述】:我正在通过显示ProgressBar
使用AsyncTask
在ListView
中加载列表。但在我的代码中,ProgressBar
现在正在显示。无法理解问题。
我使用了与 slidenerd 中相同的代码,但在视频代码中有效,但我的代码似乎不起作用。
Video Link
public class MainActivity extends AppCompatActivity
ListView listView;
String[] items = "Ankush", "Kapoor", "Amit", "Kumar", "Shirshak", "Tillu", "Mishra", "Sudeep", "Dey", "Ayon",
"Ankush", "Kapoor", "Amit", "Kumar", "Shirshak", "Tillu", "Mishra", "Sudeep", "Dey", "Ayon",
"Ankush", "Kapoor", "Amit", "Kumar", "Shirshak", "Tillu", "Mishra", "Sudeep", "Dey", "Ayon",
"Ankush", "Kapoor", "Amit", "Kumar", "Shirshak", "Tillu", "Mishra", "Sudeep", "Dey", "Ayon";
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>());
listView.setAdapter(adapter);
new JSONTask().execute();
public class JSONTask extends AsyncTask<Void, String, Void>
private ArrayAdapter<String> adapter;
private int count = 0;
@Override
protected void onPreExecute()
adapter = (ArrayAdapter<String>) listView.getAdapter();
setProgressBarIndeterminateVisibility(true);
setProgressBarVisibility(true);
@Override
protected Void doInBackground(Void... params)
for (String i : items)
publishProgress(i);
try
Thread.sleep(200);
catch (InterruptedException e)
e.printStackTrace();
return null;
@Override
protected void onProgressUpdate(String... values)
adapter.add(values[0]);
count++;
setProgress((int) (((double) count / items.length) * 10000));
@Override
protected void onPostExecute(Void aVoid)
setProgressBarIndeterminateVisibility(false);
setProgressBarVisibility(false);
Toast.makeText(getApplicationContext(), "Done!", Toast.LENGTH_SHORT).show();
【问题讨论】:
也许您想尝试使用 ProgressDialog 代替?只需创建它并调用 .show() 或 .hide(); 【参考方案1】:来自setProgressBarVisibility()
和setProgressBarIndeterminateVisibility()
的documentation:
此方法在 API 级别 24 中已弃用。
不再支持 从 API 21 开始。
您应该改用ProgressDialog
。
【讨论】:
【参考方案2】:你应该使用简单的ProgressDialog
例如:
ProgressDialog myPd = ProgressDialog.show(context, "Please wait", "Uploading Database to Cloud...", true);
myPd.setCancelable(false);
【讨论】:
以上是关于ProgressBar 未显示在 AsyncTask 中的主要内容,如果未能解决你的问题,请参考以下文章
ProgressBar 没有出现在位于 Fragment 的 WebView 中,如何在 WebView android 中显示 ProgressBar?
在 RecyclerView 列表之后显示 ProgressBar