资源 - XAMARIN下缺少菜单

时间:2018-01-08 04:37:30

标签: android xamarin xamarin.android

我正在尝试在我的应用栏上实现一个菜单,但为什么我无法在资源下找到它?正如您所看到的,它的名称下面有红色。我试图右键单击它,但它只说生成菜单方法。我无法重建和部署它,因为它给了我那种奇怪的错误。此后发生的事情是我的VS甚至无法读取资源本身。如果我添加其他活动或删除它或重新启动VS,我只能解决它。

enter image description here

这是我的菜单文件夹。

enter image description here] 2

以下是我的活动完整代码

using System;
using Android.App;
using Android.OS;
using Android.Views;
using Android.Widget;
using Android.Support.V7.App;
using Android.Support.V7.Widget;
using SupportToolbar = Android.Support.V7.Widget.Toolbar;
using Entities;

namespace RBankCI
{
    [Activity(Label = "PDRN", MainLauncher = true, Theme = "@style/Theme.FullScreenBaseDesign")]
    public class Activity_PDRN : AppCompatActivity, IActivityInterface
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Layout_PDRNForm);
            Title = string.Empty;
            i1_setupActionBar();
        }

        public void i1_setupActionBar()
        {
            // Initialize Support ToolBar
            SupportToolbar toolBar = FindViewById<SupportToolbar>(Resource.Id.toolBar);
            toolBar.SetBackgroundResource(Resource.Drawable.AppBarBackgrounWithTitle);
            SetSupportActionBar(toolBar);
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
        }

        public void i2_initialization()
        {
            throw new NotImplementedException();
        }

        public void i3_deserializeIntentExtras()
        {
            throw new NotImplementedException();
        }

        public void i4_setUpAllClickable()
        {
            throw new NotImplementedException();
        }

        public void i5_setTextChangeBehaviour()
        {
            throw new NotImplementedException();
        }

        public void i6_setTextFieldValues()
        {
            throw new NotImplementedException();
        }

        #region Override OnCreateOptionsMenu()
        /// <summary>
        /// Create a menu setting
        /// </summary>
        /// <param name="menu">Menu</param>
        /// <returns></returns>
        public override bool OnCreateOptionsMenu(IMenu menu)
        {
            //Here is the problem. My VS can't read the Menu after Resource

            // Create Menu Action
            MenuInflater.Inflate(Resource.Menu.menu_form, menu);

            return true;
        }
        #endregion

        #region Override OnOptionsItemSelected()
        /// <summary>
        /// Event when a user clicks one of the ActionBar Icons
        /// </summary>
        /// <param name="item">Action Item</param>
        /// <returns></returns>
        public override bool OnOptionsItemSelected(IMenuItem item)
        {
            // Open Navigation Drawer
            switch (item.ItemId)
            {
                // User click menu icon
                case Android.Resource.Id.Home:
                    OnBackPressed();
                    return true;
                case Android.Resource.Id.menu_clear: //here, I can see and error a constant value is expected. This id is under the menu_form.xml
                    Toast.MakeText(this, "Clear All Fields", ToastLength.Short).Show();
                    return true;
                case Resource.Id.menu_attach: //here, I can see and error a constant value is expected. This id is under the menu_form.xml
                    Toast.MakeText(this, "Attach Photo", ToastLength.Short).Show();
                    return true;
                default:
                    return base.OnOptionsItemSelected(item);
            }
        }
        #endregion

        #region Override OnBackPressed()
        /// <summary>
        /// Override OnBackPressed
        /// </summary>
        public override void OnBackPressed()
        {
            try
            {
                Finish();
            }
            catch (Exception e)
            {
                Toast.MakeText(this, ENT_NegativeResponse.somethingWentWrong, 0).Show();
            }
        }
        #endregion
    }
}

这是我的menu_form.xml

<?xml version="1.0" encoding="utf-8" ?>
<!--For all properties see: http://developer.android.com/guide/topics/resources/menu-resource.html-->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

  <!-- Declaring Menu Actions -->
  <item
  android:id="@+id/menu_clear"
  android:title="Clear All Fields"
  android:icon="@drawable/ic_clear_fields_png_x3"
  app:showAsAction="ifRoom"/>

  <item
  android:id="@+id/menu_attach"
  android:title="Attach Photo"
  android:icon="@drawable/ic_attach_image_png_x3"
  app:showAsAction="ifRoom"/>

</menu>

4 个答案:

答案 0 :(得分:1)

使用此 - :

div

在这种情况下导入当前包的R文件

答案 1 :(得分:0)

  

资源 - XAMARIN

下缺少菜单

检查Resource.designer.cs中是否已生成资源ID。

enter image description here

在我的项目中,资源ID为:

public partial class Id
{
    ...
    // aapt resource value: 0x7f0b007b
    public const int menu_attach = 2131427451;

    // aapt resource value: 0x7f0b007a
    public const int menu_clear = 2131427450;
    ...
}

...

public partial class Menu
{

    // aapt resource value: 0x7f0d0000
    public const int menu_form = 2131558400;

    static Menu()
    {
        global::Android.Runtime.ResourceIdManager.UpdateIdValues();
    }

    private Menu()
    {
    }
}

解决方案:

如果尚未生成,通常清理并重建项目将再次生成它,除非某处出现语法错误。

答案 2 :(得分:0)

<强>更新

为Visual Studio更新Xamarin解决了资源下缺少菜单的问题。

后得到蓝绿色

我从我的Resource.Designer.cs找回了它,虽然它下面还有一条消息:&#39;资源&#39;不包含&#39;菜单&#39;的定义对于他们拥有的按钮&#34;需要一个恒定的值&#34;。但它仍在使用红线。

供其他人参考,这就是我所做的。

我的VS.Xamarin之前我的菜单很好,直到它提示我有消息说它无法识别。以下是我尝试的步骤:
1.重新启动VS
2.删除项目
下的bin和obj 3.删除了user / appdata / local / xamarin
下的xamarin文件夹内容 4.尽可能多地清洁和重建 5.在资源
下创建新的菜单文件夹 6.从添加按钮创建菜单文件,但我认为这也是一个问题

Soution的一部分
添加按钮下的菜单生成menu_form.xml文件,而xamarin读取.axml格式。所以我的解决方案是创建一个布局,复制我的menu_form.xml,然后清理然后重建。菜单,menu_form及其元素在此之后显示为Resource.Designer.cs。

这对我来说实际上是一个问题,因为它之前正在工作但突然停止并给了我一个错误 我仍然有一个关于Resource.Menu的错误,从一开始就用红线一样,但它运行良好。我不知道为什么我的VS会给我这个错误。

答案 3 :(得分:0)

确保已对其进行编辑:

enter image description here

(将BuildAction更改为AndroidResource)