方法一:
protected void onCreate(Bundle savedInstanceState) {
aBtn = (Button) findViewById(R.id.aBtn);
aBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String btn_str = aBtn.getText().toString();
if ("开始".equals(btn_str)) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
start();
}
});
t.start();
} else
stop();
}
});
Button bBtn = (Button) findViewById(R.id.bBtn);
bBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.e("++++++++++", "++++++++++");
}
});
}
方法二:
protected void onCreate(Bundle savedInstanceState) {
aBtn = (Button) findViewById(R.id.aBtn);
aBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String btn_str = aBtn.getText().toString();
if ("开始".equals(btn_str)) {
new Thread(new Runnable() {
@Override
public void run() {
start();
}
}).start();
} else
stop();
}
});
Button bBtn = (Button) findViewById(R.id.bBtn);
bBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.e("++++++++++", "++++++++++");
}
});
}
方法一正常,点击A按钮,进入开始正常执行,点击B按钮才会触发++++++的输出,
方法二不正常,点击A按钮,进入开始之后,就会不断的触发+++++的输出。
这个问题不理解是为什么,有大神给解释下吗?
PS:确保在start方法中不会有影响到按钮B的操作。
------解决思路----------------------
private Button aBtn = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.btn_test_layout);
// aBtn = (Button) findViewById(R.id.btna);
// aBtn.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// String btn_str = aBtn.getText().toString();
// if ("开始".equals(btn_str)) {
// Thread t = new Thread(new Runnable() {
// @Override
// public void run() {
// Log.e("tag", "222222222222");
// }
// });
// t.start();
// } else
// Log.e("tag", "3333333333333333");
// }
// });
// Button bBtn = (Button) findViewById(R.id.btnb );
// bBtn.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// Log.e("++++++++++", "++++++++++");
// }
// });
aBtn = (Button) findViewById(R.id.btna);
aBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String btn_str = aBtn.getText().toString();
if ("开始".equals(btn_str)) {
new Thread(new Runnable() {
@Override
public void run() {
Log.e("tag", "222222222222");
}
}).start();
} else
Log.e("tag", "111111111111111");
}
});
Button bBtn = (Button) findViewById(R.id.btnb);
bBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.e("tag", "3333333333333333");
}
});
}
亲测,没有错~~~~~~~~~~~~~~~~~~~
------解决思路----------------------
你可能外部有写一个start()方法……
public static void start() {
/**
* 外部的start方法,静态
*/
}
public void test() {
new Thread(new Runnable() {
public void start() {
/**
* 加一个start方法
*/
}
@Override
public void run() {
/**
* 这里的start的2种情况
*/
start();
}
}).start();
}