相对布局的Android菜单XML问题

时间:2012-10-24 07:38:25

标签: android xml layout menu relative

首先,我的英语不是最好的,因为我来自德国所以我为此辩护:P

我正在创建一个MapView,并且当您单击手机上的菜单按钮时想要添加一个菜单。所以我这样做了,它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/my_location"
          android:icon="@drawable/compass_base"
          android:title="Meine Position"
          android:showAsAction="ifRoom"/>
</menu>

我的活动看起来像这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


    <com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="0zPcuLDMKtZhz-000000000000000000"
    />

    <TextView
        android:id="@+id/tvLongitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="@string/defaultLongitude" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Latidude:" />

    <TextView
        android:id="@+id/tvLatitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="15dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="@string/defaultLatitude" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginRight="17dp"
        android:layout_toLeftOf="@+id/tvLongitude"
        android:text="Longitude" />

</RelativeLayout>

现在的问题是,当我点击菜单按钮时,它只是关闭Logcat说:

10-24 07:26:20.736: E/AndroidRuntime(372): java.lang.RuntimeException: Expecting menu, got RelativeLayout

有人可以帮助我,因为我不知道如何解决它。我想离开RelativeLayout,因为我可以在MapView上显示东西,就像我现在正在做的经度和Latidude

这是菜单的MainActivity方法:

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

2 个答案:

答案 0 :(得分:2)

Android提供developers guide for menus 基于此,你应该通过以下方式对菜单进行充气:

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

因此,您的代码中的menuInflater.inflate()第一个参数不正确。您应该使用菜单xml,它位于您的res / menu文件夹中。

答案 1 :(得分:0)

假设菜单文件名为activity_main(默认值),请将代码更改为:

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