Tôi gặp sự cố trong báo cáo chuyển đổi/trường hợp của mình. Lỗi nói: "Biểu thức trường hợp phải là biểu thức hằng số". Tôi hiểu lỗi và tôi có thể giải quyết nó bằng cách sử dụng Nếu ai đó có thể cho tôi biết lý do tại sao biểu thức trường hợp phải không đổi trong một chuyển đổi/trường hợp. Ví dụ về lỗi của tôi:Sự cố chuyển đổi Java: biểu thức trường hợp phải là biểu thức không đổi
public boolean onOptionsItemSelected(MenuItem item) {
int idDirectory = ((MenuItem) findViewById(R.id.createDirectory)).getItemId();
int idSuppression = ((MenuItem) findViewById(R.id.recycleTrash)).getItemId();
int idSeeTrash = ((MenuItem) findViewById(R.id.seeTrash)).getItemId();
switch (item.getItemId()) {
case idDirectory:
createDirectory(currentDirectory);
break;
case idSuppression:
recycleTrash();
break;
case idSeeTrash:
seeTrash();
break;
}
return super.onOptionsItemSelected(item);
}
Thx giải thích của bạn !!
Tại sao các bạn sử dụng 'findViewById() getItemId()'.? Nếu bạn đã có id, bạn không cần lấy item để lấy id! –
báo cáo chuyển đổi là mùi hôi ... Tôi khuyên bạn nên xem xét sử dụng đa hình hoặc mẫu bộ điều hợp để đạt được mã tìm kiếm tốt hơn. Ngoài ra, bạn có thể tránh các vấn đề như thế này hoàn toàn. – Bnjmn
@Bnjmn Tôi đồng ý, đặc biệt khi điều kiện lặp lại khá thường xuyên. Nếu bạn sử dụng nó hiếm khi nó có thể được ok. Ngoài ra, tôi sử dụng nó đôi khi với đa hình để tạo ra ví dụ cụ thể ban đầu. – OscarRyz