spinner 取值成功传递给handle 闪退

sp0.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
Spinner sp0=(Spinner) findViewById(R.id.sp0);
System.out.println(sp0.getSelectedItem().toString());
handle1.obtainMessage(1,sp0.getSelectedItem().toString()).sendToTarget();
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
handle1 = new Handler(){
public void handleMessage (Message msg) {
switch(msg.what) {
case 1:
System.out.println( (String) msg.obj);
}
}
};
Looper.loop();
}
}).start();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {

        }
    });


            为什么执行  handle1.obtainMessage(1,sp0.getSelectedItem().toString()).sendToTarget();
            会闪退。

handle1.obtainMessage(1,sp0.getSelectedItem().toString()).sendToTarget();
运行这一句的时候,你的handle1还没有初始化没有创建呢。handle1在线程中创建的,而线程还在你那一句后面创建,所以你在使用handle1时一定是空的。
就算创建线程在handle1.obtainMessage(1,sp0.getSelectedItem().toString()).sendToTarget();之前也不能保证在调用handle1时handle1一定创建了,这里要做一个判断同步机制的。

为什么执行 handle1.obtainMessage(1,sp0.getSelectedItem().toString()).sendToTarget();