메뉴가있는 NavigationView가 있습니다. 메뉴 항목을 길게 누르면, 다양한 옵션/버튼을 제공하는 팝업이 나타납니다. 각 버튼에는 이벤트 핸들러가 있습니다.Android 팝업 - 이벤트 처리기에 인수 전달
어떤 메뉴 항목이 원래 팝업을 시작했는지 알기 위해 이러한 핸들러가 필요합니다.
내가 누락 된 것은 개체 흐름에 따라 해당 ID를 전달하는 방법에 대한 지식입니다.
게시 된 코드에서 menuitem은 longclicked이고 팝업 생성자에 menutem을 뷰로 전달합니다. 그러나 팝업 Button의 이벤트 처리기로 전달하는 방법을 모릅니다.
나는 길가잡이가 발생할 때 단순히 id를 사용하여 변수를 설정 한 다음 최종 핸들러에서 변수를 다시 읽는 방법을 고려하고 있습니다.하지만 속임수를 쓰는 것처럼 느껴지며 다음을 관리해야합니다. 이벤트와의 동기화를 보장하십시오. 내가 질문을 받았다면
@Override
public boolean onLongClick(View v) {
pop(v);
return true;
}
public void pop(View v){
LayoutInflater layoutInflater =
(LayoutInflater)getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.popup, null);
final PopupWindow popupWindow = new PopupWindow(
popupView,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
btnDismiss.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View vw) {
Toast.makeText(getApplicationContext(), "id of menuitem here", Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
}
});
popupWindow.showAsDropDown(v, 50, -30);
}
불행하게도이 작동하지 않습니다 : 당신은 문자열로 id 값을 캐스팅 할 생각이 경우 , 당신은
setTag()
및getTag()
가 사용할 수 있습니다. onlongpress로 전달되는보기는 참으로 메뉴 항목입니다. 그러나 버튼 이벤트로 전달되는보기는 버튼 자체입니다. – Esby