3

2つのボタンにポップアップメニューを使用したい。私が今それを達成している方法は、ボタンごとにそれぞれ膨張する2つの別々のxmlファイルpopup_menu1.xmlとpopup_menu2.xmlを作成することです。Popup-menu-1には2つのメニュー項目があり、popup-menu-2には4つのメニュー項目があります。写真は、より明確にするために追加されています。

popup_menu1.xmlには2つのメニュー項目、個別のxmlファイルがありますpopup_menu2.xmlには4つのメニュー項目、個別のxmlファイルがあります

各ファイルは、個々のボタンに対して膨らんでいます。

私の質問は次のとおりです。2つのボタンと2つの異なるpopup_menusに、2つの別々のxmlファイルではなく1つのxmlファイルのみを使用(膨張)できますか?

どんな助けでも大歓迎です。

ありがとうございました、

PS:より明確にするために写真を追加したかったのですが、新しいメンバーとして、彼らは私にそれを許可していません。

追加されたコード:popup_menu1:File1

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu001">
  <group android:id="@+id/group_popupmenu">
      <item android:id="@+id/menu1"
          android:title="Today's Date"/>
      <item android:id="@+id/menu2"
          android:title="Custom Date"/>
  </group>
</menu>

popup_menu2:File2

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu002">
  <group android:id="@+id/group_popupmenu">
      <item android:id="@+id/menu1"
          android:title="Last Seven (07) Days"/>
      <item android:id="@+id/menu2"
          android:title="Today"/>
      <item android:id="@+id/menu003"
          android:title="Yesterday"/>
      <item android:id="@+id/menu4"
          android:title="Last Twenty Eight (28) Days"/>
  </group>
</menu>

バージョン1の編集:アクティビティクラスのコード:

// add a click listener to the first button
startDateButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
    PopupMenu popup = new PopupMenu (CampaignDetailsActivity.this, view);
    popup.getMenuInflater().inflate(R.layout.popup_menu_01, popup.getMenu());
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
    public boolean onMenuItemClick(MenuItem item) {

        switch(item.getItemId()){
    case R.id.menu1:
    // some code here
    case R.id.menu2:
    // some code here   
        }
    return true;
    });
 popup.show();
 }
});

// add a click listener to the end date button
endDateButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View button) {
    PopupMenu popup = new PopupMenu (TestAdlikelyButtonsAndMenuActivity.this, button);
            popup.getMenuInflater().inflate(R.layout.popup_menu2, popup.getMenu());

            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                    switch(item.getItemId()){
                    case R.id.menu1:
                    // some code here
                    case R.id.menu2:
                    // some code here
                    case R.id.menu003:
                    // some code here
                    case R.id.menu4:
                    // some code here
                    }
                    return true;
                }
            });
        popup.show();
    }
});

画像:

ここに画像の説明を入力してください

ここに画像の説明を入力してください

4

1 に答える 1

1

はい、1つのXMLファイルを複数回膨らませることができますが、与えた例では、2つのXMLファイルを使用することで正しく膨らませています。膨らませた後、呼び出す前に、 Menu.add()PopupMenu.show()のバリアントの1つを使用して、 (によって返されるもの)に項目を追加できます。MenuPopupMenu.getMenu()

于 2012-06-11T06:50:06.847 に答える