1

こんにちは私はAPIレベル10をターゲットにしているPopUpMenu内部を作成したいと思います。ハードメニューキーがないことを知っているので、タブレットのバージョンは8です。したがって、ソフトメニューキーの場合、画面の下にメニューオプションを作成するために使用しています。画面のソフトメニューオプションを 押すと、初めて表示され、次回以降は何も表示されません。onCreateOptionMenu()minSdkonCreateOtionMenu()PopUpMenu

PopUpMenuこれがinsideOnCreateOptionssMenu()メソッドのコードスニペットです

  @Override 
    public boolean  onCreateOptionsMenu(Menu menu) {

    PopUpMenu popup=new PopUpMenu(this,txtView);
                        popup.getMenuInflater().inflate(R.menu.option,popup.getMenu());
     popup.show();

                        //popup.dismiss();
                        //menu.clear();
                        //getMenuInflater().inflate(R.menu.fragmenttwo_menu, menu);
                            return (super.onCreateOptionsMenu(menu));


                        }

注:ここでtxtViewはTextViewであり、PopUpMenuアイテムを表示している下のビューアンカーと言うことができます。 ここでの校正には、私が使用していますViewPager

4

3 に答える 3

0

あなたはこのように使うことができます:

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_MENU && event.getAction() == 0) {

            Toast.makeText(MainActivity.this, "hii", Toast.LENGTH_SHORT).show();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

編集済み: 上記のコードには、しばらくToastするとそれが理由になりdismissます。メソッド内で何をしたかはコードによって異なります。以下のコードを確認してください。dialogあなたまで見せてくれますdismiss

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_MENU && event.getAction() == 0) {

            PopupMenu popupMenu = new PopupMenu(MainActivity.this, lView);
            popupMenu.getMenuInflater().inflate(R.menu.activity_main,
                    popupMenu.getMenu());
            popupMenu.show();

            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

あなたが理解することを願っています...

于 2013-03-26T09:09:45.583 に答える
0

多くの研究開発を行った後、softmenuキーを使用して表示PopUpMenuすることtarget version 10は不可能であることがわかりました。PopUpMenu11以上のAPIレベル以降でのみ使用可能です。私の場合は表示されることもあれば表示されないこともあります。解決策がある場合はお知らせください。

于 2013-03-26T14:23:41.260 に答える
0

user1381827の回答を使用しましたが、メニューが消え続けることに気付きました。これが私が最終的に得たコードです:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU && event.getAction() == 1) {
        ImageView v = (ImageView) findViewById(R.id.header);
        showHeaderMenu(v);
        return false;
    }

    if(keyCode == KeyEvent.KEYCODE_MENU || keyCode == KeyEvent.KEYCODE_BACK) return super.onKeyUp(keyCode, event);
    return true;
}

しかし、一般的な場合、最後の2行は

return super.onKeyUp(keyCode, event);
于 2015-10-25T14:39:02.887 に答える