2012-02-29 9 views
0

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

デフォルトのメニューを無効にしてカスタムメニューを表示するには、以下のコードをどのように変更しますか? 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; 
     } 
} 

答えて

1

メニューキーを傍受するには、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); 
} 
+0

これを行う方法を教えてください。 – CsharpBeginner

+0

keyCode == KeyEvent.KEYCODE_MENUボタンタイプもありますか?私はそのコードを使用すると赤いアンダーラインを取得します。 – CsharpBeginner

+0

元の回答にいくつかのコードを追加しました。 –

関連する問題