无法获取纺纱进度条工作 [英] Can't get spinning Progress Bar to work
问题描述
不管是什么我尝试,我不能让我的进度条来工作。这里是code:
No matter what I try I can't get my progress bar to work. Here is the code:
public void setDayView(final int _day, final int _month, final int _year) {
ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar);
progressBar.setVisibility(ProgressBar.VISIBLE);
comm = new Thread() {
public void run() {
final postRequest req = new postRequest(username, password);
doc = (Document) req.GetDayEvents(_day, _month, _year);
}
};
comm.start();
while (comm.isAlive()) { // waiting for network to finish
}
progressBar.setVisibility(ProgressBar.GONE);
NodeList eventsTitles = doc.getElementsByTagName("Title");
NodeList eventsClasses = doc.getElementsByTagName("Class");
NodeList eventsTypes = doc.getElementsByTagName("Type");
NodeList eventsComments = doc.getElementsByTagName("Comment");
NodeList eventsAmounts = doc.getElementsByTagName("Amount");
NodeList eventsHashes = doc.getElementsByTagName("Hash");
NodeList refCurrency = doc.getElementsByTagName("RefCurrency");
NodeList dateStamp = doc.getElementsByTagName("DateStamp");
final int nrOfEvents = eventsTitles.getLength();
LinearLayout dayEventsArea = (LinearLayout) findViewById(R.id.DayEventsArea);
// set SelectedDayLabel
TextView selDayLabel = (TextView) findViewById(R.id.selectedDayLabel);
selDayLabel.setText(dateStamp.item(0).getTextContent());
//
// set day totals labels
TextView dayDebit = (TextView) findViewById(R.id.dayDebitLabel);
TextView dayOutgo = (TextView) findViewById(R.id.dayOutgoLabel);
TextView dayIncome = (TextView) findViewById(R.id.dayIncomeLabel);
dayDebit.setText("Debit: "
+ doc.getElementsByTagName("DayDebit").item(0).getTextContent()
+ " " + refCurrency.item(0).getTextContent());
dayOutgo.setText("Outgo: "
+ doc.getElementsByTagName("DayOutgo").item(0).getTextContent()
+ " " + refCurrency.item(0).getTextContent());
dayIncome.setText("Income: "
+ doc.getElementsByTagName("DayIncome").item(0)
.getTextContent() + " "
+ refCurrency.item(0).getTextContent());
//
dayEventsArea.removeAllViews();
// clearing all local caches
_eventsTitlesLocalCopy.clear();
_eventsClassesLocalCopy.clear();
_eventsAmountsLocalCopy.clear();
_eventsCommentsLocalCopy.clear();
_eventsTypesLocalCopy.clear();
_eventsHashesLocalCopy.clear();
//
for (int i = 0; i < eventsTitles.getLength(); i++) {
// creating a local cache of the day events, as they can be edited
// and sent back
_eventsTitlesLocalCopy.add(eventsTitles.item(i).getTextContent());
_eventsClassesLocalCopy.add(eventsClasses.item(i).getTextContent());
_eventsAmountsLocalCopy.add(eventsAmounts.item(i).getTextContent());
_eventsCommentsLocalCopy.add(eventsComments.item(i)
.getTextContent());
_eventsTypesLocalCopy.add(eventsTypes.item(i).getTextContent());
_eventsHashesLocalCopy.add(eventsHashes.item(i).getTextContent());
//
和从layout.xml code
and code from layout.xml
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:layout_gravity="center" />
如果我关掉code线progressBar.setVisibility(ProgressBar.GONE);那么我的进度条显示所有的时间,所以它的实际工作。
If I turn off code line progressBar.setVisibility(ProgressBar.GONE); then my progress bar is shown all the time, so it actually works.
推荐答案
我会建议使用的这不是你的线程执行的AsyncTask (点击文档中的链接,一个明显的例子上)。你可以开始当进度条可见,并在 onPostExecute
方法再次将其隐藏。我期待一些问题与您while循环,这将是干净多了。
I would suggest using an AsyncTask for this instead of your Thread-implementation (click on the link for a clear example in the documentation). You can make the progress bar visible when initiating and hide it again in the onPostExecute
method. I expect some problem with your while-loop, this would be much cleaner.
这篇关于无法获取纺纱进度条工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!