1

私の電話でメニューボタンがクリックされたときに表示されるカスタムメニューを取得しようとしています。まったく表示されません。

このフォルダー /res/drawable に register.png という名前の登録アイコンがあります。/res/menu というフォルダーに my_menu.xml があります。フォルダーのレイアウトが間違っていましたか、それとも以下のコードに何か問題がありますか。

menu.xml の名前を my_menu.xml に変更しました。コードを変更したところ、次のエラーが発生しました。

[2012-04-07 07:50:43 - HelloWebView] W/ResourceType(1560): 不正な XML ブロック: ルート要素ノードが見つかりません [2012-04-07 07:50:43 - HelloWebView] C:\Users\josh \workspace\HelloWebView\res\menu\my_menu.xml:4: エラー: パッケージ 'android' の属性 'showAsAction' のリソース識別子が見つかりません

my_menu.xml

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">    
    <item android:id="@+id/register"          
        android:icon="@drawable/register"          
        android:title="@string/register"          
        android:showAsAction="ifRoom"/>    

</menu>

メインアプリ

public class HelloWebViewActivity extends Activity {
    WebView mWebView;

    /** Called when the activity is first created. */

    public void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.main);    
        mWebView = (WebView) findViewById(R.id.webview);    
        mWebView.getSettings().setJavaScriptEnabled(true);    
        mWebView.loadUrl("http://www.Google.com");
        mWebView.setWebViewClient(new HelloWebViewClient());
    }

    private class HelloWebViewClient extends WebViewClient {   
        @Override    
        public boolean shouldOverrideUrlLoading(WebView view, String url) {        
            view.loadUrl(url);        
            return true;    
        }}

    @Override  
    public boolean onKeyDown(int keyCode, KeyEvent event) {    
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {        
            mWebView.goBack();       
            return true;    
        }    
        return super.onKeyDown(keyCode, event);}

    @Override
    public boolean onCreateOptionsMenu(Menu my_menu) {    
    MenuInflater inflater = getMenuInflater();    
    inflater.inflate(R.menu.menu, my_menu);    

    return true;
    }
}
4

3 に答える 3

4
inflater.inflate(R.menu.my_menu, my_menu); 

それは削除するだけでコードを解決しました
android:showAsAction="ifRoom"

于 2012-04-07T13:53:24.313 に答える
2

同様の問題がありました。メニューボタンが表示されなかっただけで、エラーは発生しませんでした。android:theme="@style/AppBaseTheme" (または minSDK と互換性のあるその他のテーマ) を変更して、Manifest.xml ファイルの問題を修正しました。style.xml ファイルをいじっていて、自分で作成したためです。これが問題の原因でした。役立つかもしれません。

于 2013-05-05T13:42:23.020 に答える
1

すべてのものがきれいに見え、きれいにアプリを構築します。また、これらで問題が解決しない場合は、アプリをアンインストールして再インストールしてください。

また、xml名がMenu.xmlの場合は、menu.xmlにします...大文字と小文字が区別されます

于 2012-04-07T03:09:44.090 に答える