NavigationViewメニューがあります。 メニュー項目を長押しすると、ユーザーにさまざまなオプションやボタンを与えるポップアップが表示されます。各ボタンにはイベントハンドラがあります。Androidポップアップ - イベントハンドラへの引数の受け渡し
どのメニューアイテムが最初にポップアップをトリガしたかを知るには、これらのハンドラが必要です。
私が忘れているのは、オブジェクトの流れに沿ってそのアイデンティティを渡す方法の知識です。
投稿されたコードでは、menuitemはlongclickedです。ポップアップコンストラクタのビューとしてmenutemを渡します。 それをポップアップボタンのイベントハンドラにどのように渡すかわかりません。
私は代わりに、longpressが発生したときに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);
}
残念ながら、私は完全を期すためしようとしたものの、動作しないこと。 onlongpressに渡すビューは実際にはメニュー項目です。しかし、ボタンイベントに渡されるビューはボタン自体です。 – Esby