问题描述
|
我使用以下代码在按钮操作上设置了线程。
public void onCreate(Bundle savedInstanceState) {
.........................
..........................
btnUpdateNow.setonClickListener(new OnClickListener() {
public void onClick(View v) {
Thread updateThread = new Thread() {
Handler uiHandle;
@Override
public void run() {
GetDetailsUpdate getDetailsUpdate = new GetDetailsUpdate(
strUserId,strPassword,strUDID,getApplicationContext());
uiHandle.sendEmptyMessage(0);
}
};
updateThread.start();
Handler uiHandler = new Handler(){
@Override
public void handleMessage (Message msg){
loader.setVisibility(View.INVISIBLE);
}
};
}
}
}
但是它给出了以下错误。
05-27 17:35:11.580: ERROR/AndroidRuntime(4555): Uncaught handler: thread Thread-11 exiting due to uncaught exception
05-27 17:35:11.580: ERROR/AndroidRuntime(4555): java.lang.NullPointerException
我的代码有什么问题?
解决方法
您已经在线程类和onClickListener中定义了Handler两次。
因此,您不必初始化正在使用的变量。请执行以下步骤:
首先,从此处删除声明:
Thread updateThread = new Thread() {
Handler uiHandle;
其次,在活动类而不是onClickListener中定义您的处理程序。
, 您的updateThread使用uiHandle:
uiHandle.sendEmptyMessage(0);
但是在整个Thread实现中,此字段变量永远不会设置为任何值,因此它为null。