btn_fill_start = findViewById(R.id.btn_fill_start); // 发送寻北指令 btn_fill_stop = findViewById(R.id.btn_fill_stop); // 发送停止寻北指令 btn_fill_start.setOnClickListener(view->{ // 开始寻北指令 sendData("0x8080020103EE"); //找到寻北开始控件 btn_fill_start = findViewById(R.id.btn_fill_start); //实现寻北跳转 btn_fill_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent =null; intent =new Intent(XbyActivity.this,But_Noth_Record.class); startActivity(intent); } });找bug
时间: 2024-02-15 15:27:00 浏览: 14
在这段代码中,有两个地方可能存在问题。
第一个是在发送寻北指令时,使用了字符串 "0x8080020103EE",这个字符串可能不是一个有效的指令。需要确认该指令是否正确。
第二个是在实现寻北跳转时,使用了重复的代码 btn_fill_start.setOnClickListener(view->{...} 和 btn_fill_start.setOnClickListener(new View.OnClickListener() {...})。这可能会导致点击按钮时执行两次相同的代码,需要将其中一个去掉。
相关问题
btn_fill_start = findViewById(R.id.btn_fill_start); // 发送寻北指令 btn_fill_stop = findViewById(R.id.btn_fill_stop); // 发送停止寻北指令 btn_fill_start.setOnClickListener(view->{ // 开始寻北指令 sendData("0x8080020103EE"); //保存原始的点击事件 final View.OnClickListener originalListener = btn_fill_start.getOnClickListener(); //实现寻北跳转 btn_fill_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent =null; intent =new Intent(XbyActivity.this,But_Noth_Record.class); startActivity(intent); } }); //返回时恢复原始点击事件 btn_fill_start.setOnClickListener(originalListener);改错
在这段代码中,存在一个问题,即在更改按钮的点击事件后,又立即将其更改回原始的点击事件。这会导致按钮的点击事件在第一次更改后立即被覆盖,因此不会有效果。
要解决这个问题,可以将原始的点击事件保存在另一个变量中,然后在需要恢复时再重新设置为按钮的点击事件。修改后的代码如下:
```
btn_fill_start = findViewById(R.id.btn_fill_start); // 发送寻北指令
btn_fill_stop = findViewById(R.id.btn_fill_stop); // 发送停止寻北指令
// 保存原始的点击事件
final View.OnClickListener originalListener = btn_fill_start.getOnClickListener();
btn_fill_start.setOnClickListener(view -> {
// 开始寻北指令
sendData("0x8080020103EE");
// 实现寻北跳转
Intent intent = new Intent(XbyActivity.this, But_Noth_Record.class);
startActivity(intent);
});
// 返回时恢复原始点击事件
btn_fill_start.setOnClickListener(originalListener);
```
edit_recv_data = findViewById(R.id.editRecvData); // 接收数据框 view_can_send = findViewById(R.id.viewCanSend); // 发送数据区域 btn_fill_start = findViewById(R.id.btn_fill_start); // 发送寻北指令 btn_fill_stop = findViewById(R.id.btn_fill_stop); // 发送停止寻北指令 //保存原始的点击事件 View.OnClickListener originalListener = btn_fill_start.getCameraDistance(); btn_fill_start.setOnClickListener(view->{ // 开始寻北指令 sendData("0x8080020103EE"); //实现寻北跳转 btn_fill_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent =null; intent =new Intent(XbyActivity.this,But_Noth_Record.class); startActivity(intent); } }); //返回时恢复原始点击事件 btn_fill_start.setOnClickListener(originalListener); // 清空寻北的显示数据 northDataMsg = guideDataMsg = ""; showRecvData("", false); // 清空进度条 setProgressValue(0); progressValue = 0; progressFlag = false; }); btn_fill_stop.setOnClickListener(view->{ // 结束寻北指令 sendData("0x8080020204EE"); // 进度条停止 progressFlag = false; });改错
这段代码有一处错误,即在获取原始点击事件时,使用了错误的方法 `getCameraDistance()`,应该使用 `getOnClickListener()` 方法获取原始点击事件。正确的代码如下:
```
edit_recv_data = findViewById(R.id.editRecvData); // 接收数据框
view_can_send = findViewById(R.id.viewCanSend); // 发送数据区域
btn_fill_start = findViewById(R.id.btn_fill_start); // 发送寻北指令
btn_fill_stop = findViewById(R.id.btn_fill_stop); // 发送停止寻北指令
// 保存原始的点击事件
View.OnClickListener originalListener = btn_fill_start.getOnClickListener();
btn_fill_start.setOnClickListener(view -> {
// 开始寻北指令
sendData("0x8080020103EE");
// 实现寻北跳转
btn_fill_start.setOnClickListener(view1 -> {
Intent intent = new Intent(XbyActivity.this, But_Noth_Record.class);
startActivity(intent);
});
// 返回时恢复原始点击事件
btn_fill_start.setOnClickListener(originalListener);
// 清空寻北的显示数据
northDataMsg = guideDataMsg = "";
showRecvData("", false);
// 清空进度条
setProgressValue(0);
progressValue = 0;
progressFlag = false;
});
btn_fill_stop.setOnClickListener(view -> {
// 结束寻北指令
sendData("0x8080020204EE");
// 进度条停止
progressFlag = false;
});
```