Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用处理程序更新ProgressBar?_Android_Android Progressbar_Android Handler - Fatal编程技术网

Android 如何使用处理程序更新ProgressBar?

Android 如何使用处理程序更新ProgressBar?,android,android-progressbar,android-handler,Android,Android Progressbar,Android Handler,我是Android新手,我正在尝试通过一个教程来学习如何将ProgressBar与处理程序结合使用。请注意,我的目标是API 11 以下是我的代码,其中包含内联错误: public class HandlerDemo extends Activity { ProgressBar bar; Handler handler = new Handler() { @Override public void handleMessage() { //

我是Android新手,我正在尝试通过一个教程来学习如何将
ProgressBar
处理程序结合使用。请注意,我的目标是API 11

以下是我的代码,其中包含内联错误:

public class HandlerDemo extends Activity {

    ProgressBar bar;
    Handler handler = new Handler() {

        @Override
        public void handleMessage() {   // Shows "method must override or implement supertype method" on this line.
            bar.incrementProgressBy(5);
        }

        @Override
        public void close() {

        }

        @Override
        public void flush() {

        }

        @Override
        public void publish(LogRecord arg0) {

        }
    };

    AtomicBoolean isRunning = new AtomicBoolean(false);

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_handler_demo);
        bar = (ProgressBar)findViewById(android.R.id.progress);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_handler_demo, menu);
        return true;
    }

    public void onStart() {
        super.onStart();
        bar.setProgress(0);

        Thread background = new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    for(int i = 0; i < 20 && isRunning.get(); i++) {
                        Thread.sleep(1000);
                        handler.sendMessage(handler.obtainMessage()); // Shows "Method is undefined for type Handler" on this line.
                    }
                } catch(Throwable t) { }
            }
        });
        isRunning.set(true);
        background.start();
    }

    public void onStop() {
        super.onStop();
        isRunning.set(false);
    }
}
公共类HandlerDemo扩展活动{
进度条;
Handler=newhandler(){
@凌驾
public void handleMessage(){//在此行显示“方法必须重写或实现超类型方法”。
巴.递增进度(5);
}
@凌驾
公众假期结束(){
}
@凌驾
公共图书馆{
}
@凌驾
公共无效发布(日志记录arg0){
}
};
AtomicBoolean isRunning=新的AtomicBoolean(false);
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u handler\u demo);
bar=(ProgressBar)findviewbyd(android.R.id.progress);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.activity\u handler\u demo,menu);
返回true;
}
public void onStart(){
super.onStart();
进度条(0);
线程背景=新线程(newrunnable(){
@凌驾
公开募捐{
试一试{
对于(int i=0;i<20&&isRunning.get();i++){
睡眠(1000);
handler.sendMessage(handler.obtainMessage());//在此行显示“类型处理程序的方法未定义”。
}
}捕获(可丢弃的t){}
}
});
isRunning.set(真);
background.start();
}
公共void onStop(){
super.onStop();
isRunning.set(false);
}
}

为什么会出现这些错误?

您的
处理程序导入错误。它应该是
android.os.Handler

它显示警告,并且处理程序类必须是静态的,否则可能会发生泄漏NX buddy…它工作了,我被ctrl+shft+o搞砸了…thnx a lotIf如果这个问题得到了回答,我建议接受答案并发布一个新问题,以及更新的代码和错误日志。