我正在制作一个非常简单的测试应用程序,并设置seekBar的位置我正在使用runnable。虽然我对实际使用runnable的经验很少。
public class MySpotify extends Activity implements Runnable {
private SeekBar progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spotify_app);
myProgress = (SeekBar) findViewById(R.id.myBar);
}
@Override
public void run() {
myProgress.setProgress(25);
}
}
如果我将myProgress.setProgress(25);
移到onCreate中,那么它就可以了。但我希望它能在runnable中出发。有什么想法吗?
答案 0 :(得分:0)
您需要post()
Runnable
到Thread
才能执行此操作。尝试在post(this);
内拨打onCreate()
。
答案 1 :(得分:0)
尝试
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spotify_app);
myProgress = (SeekBar) findViewById(R.id.myBar);
myProgress.post(new Runnable()
{
public void run()
{
myProgress.setProgress(25);
}
});
}
您需要在
上运行post()
方法
答案 2 :(得分:0)
只需调用run()即可启动run方法; 请注意它将在主线程上执行。 还要注意,由于没有循环,它只会运行一次。
如果你想在做其他事情时更新,你可以创建一个新线程。
示例:
public class MySpotify extends Activity{
private SeekBar myProgress; //I asume it is call "myProgress" instead of "progress"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spotify_app);
myProgress = (SeekBar) findViewById(R.id.myBar);
ThreadExample example = new ThreadExample();
example.start();
/* Start a new thread that executes the code in the thread by creating a new thread.
* If ou call example.run() it will execute on the mainthread so don't do that.
*/
}
private class ThreadExample extends Thread{
public void run() {
myProgress.setProgress(25);
}
}
}