这基本上是我的代码:
private Dialog mDialog;
private BluetoothAdapter mBluetoothAdapter;
...
private void onCreate(Bundle savedInstanceState) {
...
enabltBTButton = getMyButton();
enableBtButton.setOnClickListener(this.enableBT);
...
}
...
public View.OnClickListener enableBT = (new View.OnClickListener() {
public void onClick(View view) {
mDialog.hide();
mBluetoothAdapter.enable();
Toast.makeText(Main.this, "Bluetooth enabled", Toast.LENGTH_LONG).show();
return;
}
});
问题:当我点击按钮时没有任何反应!我很肯定enableBTButton
指的是正确的对象,但我的猜测是,这与我的引用mDialog
和mBluetoothAdapter,
有关,这两者都在内部onClick
之外声明{ {1}}功能。
对此有什么替代解决方案?
答案 0 :(得分:1)
在粘贴的代码中:
private void onCreate()
但它应该是:
protected void onCreate (Bundle savedInstanceState)
如果它确实是代码中的“private onCreate()”,那么框架将不会调用它,因为它不会覆盖Activity.onCreate(Bundle),这意味着onClickListener没有设置为你的按钮也是。
答案 1 :(得分:0)
我认为问题在于您正在调用函数setOnClickEventListener
,但您应该调用setOnClickListener
。 setOnClickEventListener
是你写的一个函数吗?
(顺便说一句,您可以通过注释掉这些行来测试您对引用mDialog和/或mBluetoothAdapter的猜测。我不认为这是问题所在。)
答案 2 :(得分:0)
而不是随波逐流,我决定使用AlertDialog,这似乎可以很好地完成工作。谢谢大家的解决方案。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Bluetooth is not enabled...")
.setCancelable(false)
.setPositiveButton("Enable it!", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getApplicationContext(), "Bluetooth enabled", Toast.LENGTH_LONG).show();
...
}
})
.setNegativeButton("Leave it!", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getApplicationContext(), "Bluetooth still disabled", Toast.LENGTH_LONG).show();
}
});
AlertDialog mAlert = builder.create();
mAlert.show();