0

WebView の実行中にメニュー ボタンがクリックされたときに、関数 onCreateOptionsMenu を呼び出したいと考えています。現在、Webview の実行中に Memnu ボタンをクリックすると、カスタム メニューではなくデフォルト メニューが表示されます。

以下のコードを変更してデフォルト メニューを無効にし、カスタム メニューを表示するにはどうすればよいですか? Web ビューが実行されていない場合、メニュー ボタンをクリックするとカスタム メニューが表示されます。

public class WebViewActivity extends Activity {
    WebView mWebView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        final Activity mActivity = this;
        super.onCreate(savedInstanceState);

        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.main);
        // SETS DEFAULT MODE TO LANDSCAPE
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        // Makes Progress bar Visible
        getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
            Window.PROGRESS_VISIBILITY_ON);

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl("http://Google.com");

        mWebView.setWebChromeClient(new WebChromeClient() {

            public void onProgressChanged(WebView view, int progress) {
                mActivity.setTitle("Google.com");
                mActivity.setProgress(progress * 100);
            }
        });
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
        // do your menu stuff here 

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


        @Override
        public boolean onCreateOptionsMenu(Menu menu){
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.mymenu, menu);
            return true;
        }
}
4

1 に答える 1

1

Menu キーをインターセプトするには、onKeyDown 関数をオーバーライドする必要があります。そうしないと、webview がそれを消費します。このようなもの:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        // do your menu stuff here

        return true;
    }
        else
        return super.onKeyDown(keyCode, event);
}
于 2012-02-29T16:34:45.120 に答える