【发布时间】:2018-07-18 21:00:07
【问题描述】:
我正在尝试禁用 onsucceed() 方法上的按钮。但是我尝试了所有可能的选项,例如button.setVisibility()、button.setEnabled(),但没有任何效果。根本原因可能是什么?
这是我的代码:
if(device1notConnected) {
scanneddevice1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
if(device1notConnected==false)
scanneddevice1.setClickable(false);
device1.connect(new DeviceConnectCallback() {
@Override
public void onSucceed(Device device1, DeviceConnectResult result) {
device1notConnected = false;
Log.d(TAG, "The connection is successful");
Toast.makeText(getApplicationContext(), "The connection is successful", Toast.LENGTH_SHORT).show();
// The connection is successful...
}
@Override
public void onError(Device device, DeviceCallbackException e) {
Log.d(TAG,"error");
}
});
}
});
}
【问题讨论】:
-
也许这取决于谁是“DeviceConnectCallback()”的执行者。你有“connect()”方法的源代码吗?如果是:您必须检查它是否使用 Handler 或“runOnUiThread()”在 UiThread/MainThread 上执行“onSucceed()”回调,还是由内部 WorkerThread 完成(如果使用)。当您使用“button.setVisibility()”时,您是否检查过“onSucceed()”方法是否正确执行到其结束?因为我开始认为回调代码会生成一个异常,并且在到达您的 setVisibility() 之前它会提前结束...