简体   繁体   中英

android development on options menu

I am new to Android development by using PhoneGap, I try to build an options menu through a tutorial from http://developer.android.com/guide/topics/ui/menus.html , but it always gave error messages like below:

[2011-12-20 16:45:28 - HelloPhoneGap] W/ResourceType(23444): Bad XML block: header size >84 or total size 0 is larger than data size 0 [2011-12-20 16:45:28 - HelloPhoneGap] C:..\workspace\HelloPhoneGap\res\menu\menu.xml:3: >error: Error: No resource found that matches the given name (at 'title' with value >'@string/new_game'). [2011-12-20 16:45:28 - HelloPhoneGap] C:..\workspace\HelloPhoneGap\res\menu\menu.xml:5: >error: Error: No resource found that matches the given name (at 'title' with value >'@string/help').

Here is console code:

package com.phonegap.helloworld;

import android.os.Bundle;
import com.phonegap.*;

public class App extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.loadUrl("file:///android_asset/www/jqm/index.htm");
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.new_game:
        newGame();
        return true;
    case R.id.help:
        showHelp();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

@Override
public boolean onKeyDown(int keyCode,KeyEvent event){
        if (keyCode == KeyEvent.KEYCODE_MENU) {
           return false;
       }else{
           return super.onKeyDown(keyCode, event);
       }

}

}

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/new_game"
      android:title="@string/new_game" />
    <item android:id="@+id/help"
      android:title="@string/help" />
</menu>

Did anybody tell what cause the errors?

Thanks a lot!


After define string in string.xml, the error gone away but I've meet new errors like below

KeyEvent cannot be resolved to a type   App.java    /HelloPhoneGap/src/com/phonegap/helloworld  line 39 Java Problem
KeyEvent cannot be resolved to a variable   App.java    /HelloPhoneGap/src/com/phonegap/helloworld  line 40 Java Problem
Menu cannot be resolved to a type   App.java    /HelloPhoneGap/src/com/phonegap/helloworld  line 17 Java Problem
MenuInflater cannot be resolved to a type   App.java    /HelloPhoneGap/src/com/phonegap/helloworld  line 18 Java Problem
MenuItem cannot be resolved to a type   App.java    /HelloPhoneGap/src/com/phonegap/helloworld  line 24 Java Problem

Seems like you are missing your /res/values/strings.xml There should be the string tags for your texts like:

<string name="help">Help</string>
<string name="new_game">New game</string>

you must have define Strings new_game in values like

<resources>
<string name="new_game">Your String</string>
 <string name="help">Your String</string>
</resources>

refer this

You can create values xml file -If you are using eclipse then right click on the project and select other and there select android xml file,then given window select resource type as value,

It looks like you don't have or have some errors in strings.xml file in strings new_game and help

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM