Question

I want to call my function onCreateOptionsMenu when the menu button is clicked when my webview is running. Right now when you click the Memnu button when the Webview is runing it displays some default menu not my custom menu.

How would I modify my code below to disable the default menu and display my custom menu? When the web view is not running it shows my custom menu when you click the menu button.

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;
        }
}
Was it helpful?

Solution

You have to override the onKeyDown function, to intercept the Menu key. Otherwise the webview will consume it. Something like this:

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);
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top