2011-02-01 80 views
2

我有一个按钮,onclick读取并向用户显示rss消息列表。我想添加一个进度条,直到完成加载。我的问题是,如果我添加一个栏,它会在第一时间正常工作,但如果按下后退按钮,栏会再次启动,并且无法停止。任何帮助或教程演示进度条将不胜感激。谢谢!进度条问题

ProgressBar myProgressBar; 
    int myProgress = 0; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main1); 

    Button nea = (Button) findViewById(R.id.nea); 
    nea.setOnClickListener(new View.OnClickListener() { 
    public void onClick (View view) { 
    setContentView(R.layout.bar); 

    myProgressBar=(ProgressBar)findViewById(R.id.bar); 

      new Thread(myThread).start(); 

    Intent myIntent = new Intent(view.getContext(), nea.class); 
    startActivityForResult(myIntent, 0); 
    } 
    }); 
} 

private Runnable myThread = new Runnable(){  
    @Override 
    public void run() { 
    // TODO Auto-generated method stub 
    while (myProgress<100){ 
     try{ 
     myHandle.sendMessage(myHandle.obtainMessage()); 
     Thread.sleep(1000); 
     } 
     catch(Throwable t){ 
     } 
    } 
    } 

    Handler myHandle = new Handler(){ 

    public void handleMessage(Message msg) { 
     // TODO Auto-generated method stub 
     myProgress++; 
     myProgressBar.setProgress(myProgress); 
    } 
    }; 
     }; 
+1

表现出一定的代码请,很难说smthing离不开它。 – 2011-02-01 14:16:36

+0

当数据编码完成时删除进度条 – 2011-02-01 14:32:31

+0

您试图使用进度条来处理什么?您目前的实施似乎没有任何效果。 – 2011-02-01 14:50:13

回答

1

其实我有AsyncTask,在那里你在onPreExecute()启动进度条实现这一点,在onPostExecute()取消它,做下载的doInBackground()。如果你想更新进度值,可以publishProgress()doInBackground()然后可以在进度条中onProgressUpdate()

https://github.com/pilhuhn/ZwitscherA/blob/master/src/de/bsd/zwitscher/TweetListActivity.java#L328 更新显示,使用这些方法和显示/一的AsyncTask的一个例子,如何隐藏一个进度条( pg变量)

1

问题是,您不能恢复myProgress变量。将其设置为0的onCreate()的开头:

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main1); 
    myProgress = 0; // <--- notice that statement. 
    ... 
} 

另外,我建议你使用AsyncTask任何背景的工作。见示例here

0

您的代码看起来并不像您希望的那样工作。你想在这个活动和下一个(我的假设)之间显示一个进度条。根据您的代码现在的工作情况,它看起来好像当前活动将启动一个线程,该线程将显示大约100秒的进度条,但同时您正在加载第二个活动。所以如果在100秒之前,如果你点击后退按钮,你将回到原来的活动,它仍然显示进度条。

一般来说,我不认为你需要一个活动之间的进度条,虽然,因为他们应该很顺利地交换它们。我通常会使用进度条在活动完全呈现之前加载数据。

也许你应该在一些对进度的Android的文件来看看:

http://developer.android.com/reference/android/widget/ProgressBar.html

http://developer.android.com/reference/android/app/ProgressDialog.html

http://developer.android.com/guide/topics/ui/dialogs.html