1

ICS 작업 표시 줄에 대해 방금 설명한 내용입니다. 나는 액션 바 셜록과 협력하여 내가하고 싶은 것들에 대해 하위 호환이 가능하도록하고 샘플에 많은 소스 코드를 사용했다.내 ActionMode를 트리거 한 뷰를 확인하는 방법은 무엇입니까?

나는 3 개의 이미지 뷰가 있으며, 모두 긴 클릭에 대한 청취자를 설정하고자합니다. 사용자가 하나를 오래 클릭하면, 액션 바를 통해 ActionMode를 보여 주어 사진을 찍을 것입니다. 액션 바가 메뉴처럼 작동하는 것처럼 보이기 때문에 버튼을 클릭 한 후에 ImageView가 내 ActionMode를 트리거 한 것을 어떻게 알 수 있습니까?

지금 막 많은 조사가 끝나지 않았기 때문에 조사를 시작했는데 이것이 내가하고 싶은 첫 번째 일이었습니다.

답변

6

동작 모드를 시작하려면 ActionMode.Callback 클래스의 인스턴스를 제공해야합니다. 이와 같은 경우 이미지 뷰에 대한 몇 가지 관련 정보를 받아들이는이 클래스 내부에 생성자를 만들어야합니다.

public static class ImageActionMode extends ActionMode.Callback { 
    private final int viewId; 

    public ImageActionMode(View view) { 
     viewId = view.getId(); 
    } 

    public boolean onActionItemClicked (ActionMode mode, MenuItem item) { 
     //Do something with viewId as the target 
    } 

    //Other callbacks 
} 

당신은 또한 당신이 옵션 항목에 응답해야 할 것입니다 그 전체 ImageView 또는 아무것도에 대한 참조를 유지할 수 있습니다.

public void onLongPress(View view, /*whatever else...*/) { 
    startActionMode(new ImageActionMode(view)); 
} 
+1

귀하의'공공 부울 onOptionsItemSelected (MenuItem의 항목)' 해야 할 'onActionItemClicked (ActionMode 모드의 MenuItem 항목)' –

+0

으악 { 대상으로는 viewId로 뭔가를 수행 //}! 그래, 그래야 해. 답변을 업데이트했습니다. –

+0

상자에는 아무것도 제공되지 않습니까? 그것은 이상해. – JaydeepW

0

거기에 약간의 시간을 보내고 난 후에, 나는 그것을 구현하고 성공적으로 작업 한 :

지금 당신은 같은 것을 할 것 동작 모드를 시작할 때. 아래의 링크에서 정확한 설명과 함께 코드를 제공했습니다.

https://stackoverflow.com/a/20369954/452487

관련 문제