作成中のアプリ用に、カスタムWebビューの設計に数週間を費やしました。Android WebViewを拡張するクラス(myWebViewと呼びましょう)があります。他のUI要素が受け入れるのと同じように、main.xmlでmyWebViewを宣言し、myWebViewの前にパッケージ名を追加しました。すべてがうまく機能し、ダンディでした。
拡張クラスのすべての機能を数週間機能させた後、オプションメニューを実装するときが来ました。私がやっていたことと比較して、これは比較的簡単な作業だと思いました。onCreateOptionsMenu()を上書きし、xmlファイルからメニューを拡張しようとしました。エミュレーターでアプリを実行してメニューボタンを押しても、何も起こりませんでした。onCreateOptionsMenu()のコードに欠陥はありませんでした。通常のWebビューのみを含む単純なmain.xmlを持つダミーアクティビティで試してみました。メニューはダミーアクティビティで機能しました。次に、メニューにデータを入力する他のさまざまな方法を試しました(menu.add()のさまざまな実装を使用)。これらはすべてダミーのアクティビティで機能しましたが、実際のアプリでは機能しませんでした。onCreateとonCreateOptionsMenuにあるものを除いて、アクティビティからすべてを削除しました。他の方法のいずれかがメニューの作成に干渉していないかどうかを確認します。それも何も達成しませんでした。ログステートメントをonCreateOptionsMenu()に入れて、メソッドが呼び出されているかどうかを確認します。メニューボタンを押しても呼び出されていませんでした。最後に、main.xmlに移動し、myWebViewのタグをレイアウトから削除しました。その後、アプリが実行され、メニューが機能しました。
したがって、何らかの理由で、カスタムWebビューを使用すると、メニューが機能しなくなります。他の誰かがこの問題に遭遇しましたか?カスタムUI要素でオプションメニューを使用できないとは信じがたいので、いくつかの回避策が必要です。逆に、誰かがカスタムWebビューを作成し、オプションメニューを正常に実装したことがあります。これは、コードを再検討する必要があることを意味します。誰かが助けになると思うならコードを載せますが、すべてが正しく、ベストプラクティスに従ってコーディングされていることを99.99%確信しています。また、拡張クラスのコードは大規模で、大量のスクラブが必要になります。私がここで言ったことに基づいて、誰かが何かアイデアを持っていますか?