我使用以下代码在按钮操作上设置线程。
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
我的代码中有什么问题?
答案 0 :(得分:1)
您已经两次定义了Handler:在线程类和onClickListener中。 因此,您初始化的不是您正在使用的变量。请按照以下步骤操作:
首先,从这里删除声明:
Thread updateThread = new Thread() {
Handler uiHandle;
其次,在活动类中定义您的处理程序,而不是在onClickListener中定义。
答案 1 :(得分:0)
您的updateThread正在使用uiHandle:
uiHandle.sendEmptyMessage(0);
但是在你的整个Thread实现中,这个字段变量永远不会被设置为任何东西,因此它是null。