2011-04-19 6 views
2

컨텍스트 메뉴를 사용하려는 사용자 지정 구성 요소를 구축하고 있습니다. 지금까지 난을 만든 후 다음을 수행하여 상황에 맞는 메뉴를 표시했습니다사용자 지정 구성 요소의 상황에 맞는 메뉴

public class CustomComponent extends LinearLayout implements OnClickListener, OnCreateContextMenuListener { 

private final MenuInflater menuInflator; 

public CustomComponent(final Context context) { 
    this(context, null); 
} 

public CustomComponent(final Context context, final AttributeSet attrs) { 
    super(context, attrs); 

    menuInflator = new MenuInflater(context); 

    final LayoutInflater inf = LayoutInflater.from(context); 
    inf.inflate(R.layout.component, this, true); 

    setOnClickListener(this); 
    setOnCreateContextMenuListener(this); 
} 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    menuInflator.inflate(R.menu.menu_context, menu); 
} 

@Override 
public void onClick(View v) { 
    showContextMenu(); 
} 

} 내가 지금 직면하고있어 문제는 내가합니다 (onContextItemSelected를 얻는 방법을 모르겠입니다

) 함수를 이 컴포넌트 내부에서 호출 될 수있다. Activity에서 일부 소스를보고 있었는데이 콜백을 보유하고있는 mWindow 멤버가 있음을 알았습니다. 이런 식으로 가능할 지 확실하지 않습니다. 어떤 제안?

답변

1
내가 매우 simpel 솔루션을 발견 다른 옵션을 검색 한 후

:이 대한 OnMenuItemClickListener를 구현해야 ofcouse

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    menuInflator.inflate(R.menu.menu_context, menu); 
    menu.getItem(0).setOnMenuItemClickListener(this); 
} 

@Override 
public boolean onMenuItemClick(MenuItem item) { 
    // Do something 
    return false; 
} 

을 작업을
관련 문제