クリックするたびにポップアップメニューが表示される「フィルターボタン」がアクティビティの1つにあるアプリに取り組んでいます。特に、このポップアップ メニューは常に同じであるとは限らず、前のアクティビティでユーザーが何をしたかによって異なる場合があります。
これまでのところ、アプリがさまざまなケースでさまざまなポップアップ メニューを表示できるようにする部分をコーディングしました (うまく機能します)。今、私はこれらのケースのいずれかに対して個々のリスナーを追加しようとして立ち往生しています。
ここにいくつかの説明を含む私のコードがあります:
// method called when the user clicks on "filter_button"
// displays a different popupmenu depending on the value of
// filterVariable defined in a previous activity
private void showPopupMenu(View v) {
Bundle bundle = getIntent().getExtras();
int filterVariable = bundle.getInt("filterVariable");
switch (filterVariable) {
// Case 1: inflates Res/Menu/popupmenu
case 1:
PopupMenu myPopupMenu1 = new PopupMenu(ResultListViewActivity.this, v);
myPopupMenu1.getMenuInflater().inflate(R.menu.popupmenu,
myPopupMenu1.getMenu());
myPopupMenu1.setOnMenuItemClickListener(listener_1);
myPopupMenu1.show();
break;
// Case 2: inflates Res/Menu/popumenu2
case 2:
PopupMenu myPopupMenu2 = new PopupMenu(ResultListViewActivity.this, v);
myPopupMenu2.getMenuInflater().inflate(R.menu.popupmenu2,
myPopupMenu2.getMenu());
myPopupMenu2.setOnMenuItemClickListener(listener_2);
myPopupMenu2.show();
break;
// and so on ...
}
}
今やりたいことは、リスナーごとに異なるイベントを割り当てることです。これが、listener_1、listener_2 などを定義した理由です。リスナーは変数以外のものであるはずですか?リスナーを初期化できますか?)しかし、これをこの種のコードに統合する方法がわかりません。これは、アイテムのクリックにメソッドを割り当てる従来の例です (Android Developer にあります)。 :
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.archive:
// ....
return true;
case R.id.delete:
// ....
return true;
} }
御時間ありがとうございます!