2014-04-19 29 views
5

Trong android khi tôi xác định handler onclick của menuitem trong xmlAndroid menuitem onclick giá trị trả về xử lý của

<item 
    android:id="@+id/context_menu" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/word_context_menu_title" 
    android:onClick="deleteItem"/> 

Và trong hoạt động tương ứng tôi định nghĩa một hàm deleteItem với bên dưới chữ ký.

public boolean deleteItem(MenuItem item){ 
    logger.info("delete button clicked"); 
    return false; 
} 

Câu hỏi của tôi là giá trị trả lại có ý nghĩa gì? Trong trường hợp nào tôi nên trả lại giá trị đúng và trong trường hợp nào tôi nên trả về false?

Trả lời

4

gì giá trị boolean trở lại có nghĩa là từ tài liệu của onMenuItemClick:

Return đúng với tiêu thụ nhấp chuột này và ngăn chặn người khác thực hiện.

Hành vi tương tự như vậy với onOptionsItemSelected với câu trả lời here. Nếu tôi hiểu chính xác, điều này có nghĩa là bất cứ khi nào bạn xử lý thành công sự kiện, bạn phải trả lại true.


Đây là một ví dụ.

Giả sử bạn có deleteItem và cũng onOptionsItemSelected.

public boolean deleteItem(MenuItem item){ 
    Log.v("test", "delete button clicked"); 
    return false; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) 
    { 
     case R.id.context_menu: 
      Log.v("test","onOptionsItemSelected"); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

Nếu bạn quay trở lại false trong deleteItem bạn sẽ thấy rằng nó cũng được xử lý trong onOptionsItemSelected.

> nút xóa nhấp
> onOptionsItemSelected

Nếu bạn quay trở lại true trong deleteItem nó sẽ không còn bị xử lý onOptionsItemSelected.

> xóa nút nhấp

Cũng lưu ý rằng deleteItem xử lý của bạn có thể là một phương pháp void và nó sẽ tự động trở thành sự thật theo mã nguồn here.

+0

Cảm ơn bạn đã trỏ tới mã. –

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