2011-12-12 38 views
30

Ứng dụng Android sử dụng dự án thư viện để chứa hầu hết mã ứng dụng vì có hai phiên bản ứng dụng được tạo từ nguồn chính. Kể từ khi một IDEA cập nhật IntelliJ (để v11) Tôi nhận được cảnh báo này trên mỗi báo cáo trường hợp dưới đây:ID mục menu trong dự án thư viện Android?

Resource IDs cannot be used in a switch statement in Android library modules 

Dưới đây là các mã:

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.menu_item_one: // Build error here 
      // Do stuff 
      return true; 
     case R.id.menu_item_two: // Build error here 
      // Do stuff 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

OK, vì vậy nếu tôi không có thể tham khảo thông qua ID của họ, làm thế nào để tôi tham khảo chúng?

+0

Tôi cho rằng một giải pháp sẽ được tự động tạo ra các mục trình đơn, nhưng mà loại bỏ tất cả những lợi ích của việc sử dụng các nguồn lực cho các menu. Những lỗi này dường như nói rằng không thể sử dụng các định nghĩa menu XML trong các dự án thư viện? –

Trả lời

68

Thay thế switch bằng cấu trúc if/else if.

int id = item.getItemId(); 
if(id == R.id.menu_item_one) { 
    // ... 
} 
else if(id == R.id.menu_item_two) { 
    // ... 
} 

Điều này là cần thiết vì ADT 14 vì công cụ sửa đổi cuối cùng đã bị xóa khỏi id trong lớp R.

Xem Non-constant Fields in Case Labels

+0

Rất cám ơn Alex. –

Các vấn đề liên quan