Tôi đang viết một ứng dụng Android mà làm rất nhiều thứ. Gần đây tôi đã tái cấu trúc mã của mình để có cấu trúc tốt hơn, nhưng đột nhiên tôi nhận được một vấn đề rất lạ.IF tuyên bố chỉ là không làm việc
handleRequest(String str)
{
boolean foo = executeCommand(str);
this.publishProgress("FOO1: " + foo);
if (foo == false);
{
this.publishProgress("FOO2: " + foo);
sendString("Failed to execute: " + str);
}
this.publishProgress("FOO3: " + foo);
sendEOM();
}
Đoạn mã trên phải thực thi lệnh và lưu 'foo' nếu lệnh được thực hiện đúng. Mã này nằm bên trong một AsyncTask của Android (thread) vì vậy tôi sử dụng 'publishProgress' để hiển thị một bánh mì nướng.
Tôi đã lật qua trình gỡ lỗi và FOO là đúng! Các bánh mì nướng cho thấy FOO là đúng toàn bộ con đường thông qua là tốt. Tuy nhiên, nó đi trước và nhảy vào bên trong khối IF và thực hiện điều đó. Tôi chưa bao giờ thấy điều này trước đây, tôi nghĩ rằng đó là một vấn đề với Java. Tôi đã bước mặc dù các chức năng 'executeCommand' và có vẻ như nó là bỏ qua báo cáo trở lại quá.
Tôi đã chạy mã trên thiết bị ảo và thiết bị thực và cả hai đều thực hiện điều này.
Bất kỳ ý tưởng nào? Tôi hoàn toàn thua lỗ ở đây.
loại bỏ các dấu chấm phẩy sau câu lệnh if –
Không vấn đề của bạn, nhưng sạch hơn và rõ ràng hơn để sử dụng 'if (! Foo)' để thay thế. – dimo414
@ dimo414 Phải, tôi đã cảm thấy thất vọng bởi thời gian tôi đăng bài này, vì vậy tôi đã thay đổi nó thành "FOO == FALSE" chỉ để nó được như vậy explict tôi không thể nhìn thấy bất cứ điều gì sai trái. – yellow