我的进程使用Handler更新了UI线程中的ProgressBar。但是它给出了这样的错误
.Handler.sendMessage(android.os.Message)'对空对象引用
请检查我的代码
public class MainActivity extends AppCompatActivity {
Handler handler;
Thread thread;
ProgressBar prb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prb=(ProgressBar) findViewById(R.id.progress);
thread=new Thread(new MyThread());
thread.start();
handler=new Handler(){
@Override
public void handleMessage(Message msg) {
prb.setProgress(msg.arg1);
}
};
}
class MyThread implements Runnable{
@Override
public void run() {
for (int i=1;i<10;i++) {
Message message = Message.obtain();
message.arg1=i;
handler.sendMessage(message);
try {
thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
这清楚地表明错误在这里形成,
handler.sendMessage(消息);
答案 0 :(得分:2)
在您的代码中,您拥有自己的名为Thread
的{{1}}实现。
在此实现中,您使用全局变量MyThread
的引用。
问题是:在尝试对handler
变量进行实例化之前,您正试图实例化MyThread
。
当您致电handler
handler
为null
解决方案很简单:
初始化thread.start()
答案 1 :(得分:0)
由于您在 function uncheckAll() {
angular.forEach(ocw.parents,function(parent,key){
parent.isOpenValue=false;
}
}
之前启动新主题,handler=new Handler()
在开头会为空。将onCreate更改为此
handler