0

我正在制作一个非常简单的测试应用程序,并使用可运行对象设置 seekBar 的位置。尽管我在实际使用可运行文件方面经验很少。

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 中启动。有任何想法吗?

4

3 回答 3

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);
        }                    
    }
}
于 2013-08-05T23:32:21.890 回答
0

您需要post()a Runnableto aThread才能执行。试着post(this);在里面打电话onCreate()

于 2013-08-05T23:05:49.980 回答
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()方法

于 2013-08-05T23:07:39.223 回答