#c# #xamarin.android
#c# #xamarin.android
Вопрос:
я учусь создавать приложение с использованием xamarin, и я получил ошибку при создании меню параметров. Код и метаданные вставлены ниже.
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater inflater = MenuInflater;
inflater.Inflate(Resource.Menu.Options, menu);
return true;
//return base.OnCreateOptionsMenu(menu);
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
if (item.ItemId == Resource.Id.action_refresh)
{
return true;
}
return base.OnOptionsItemSelected(item);
}
И метаданные вставлены ниже:
public partial class Menu
{
// aapt resource value: 0x7F0C0000
public const int Options = 2131492864;
static Menu()
{
global::Android.Runtime.ResourceIdManager.UpdateIdValues();
}
Это вторая ошибка при использовании Resource.Id.action_refresh, метаданные конструктора вставлены ниже:
public const int action_refresh = 2131230744;
Это вывод:
1>—— Начата сборка: Проект: и приложение, Конфигурация: Отладка любого процессора —— 1 >C:UserssimonsourcereposAndAppAndAppMainActivity.cs (31,39,31,43): ошибка CS0117: «Ресурс» не содержит определения для «Меню» 1>C:UserssimonsourcereposAndAppAndAppMainActivity.cs (37,44,37,58): ошибка CS0117: ‘Ресурс.Идентификатор’ не содержит определения для ‘action_refresh’ ========== Сборка: 0 выполнена успешно, 1 сбой, 0 обновлено, 0 пропущено ========== ========== Развертывание: 0 выполнено успешно, 0 не выполнено, 0 пропущено ==========
Ответ №1:
Если необходимо использовать ресурс.Меню, вам нужно создать папку menu под папкой Ресурсов.
Затем создайте .xml файл внутри него. Например:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@ id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
</menu>
Затем может использоваться в xxxActivity.cs:
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.menu_main, menu);
return true;
}
Примечание: При добавлении нового элемента в Ресурсы вам лучше очистить проект и перестроить его.Затем можно использовать новый элемент в коде. Если также отображается красное подчеркивание элемента resource, вы можете проигнорировать его, чтобы продолжить сборку и запустить проект. В целом он будет выполнен успешно. Потому что иногда Visual Studio не может немедленно обновить новый элемент в code.
Комментарии:
1. Я сделал так, что имя моего XML-файла — Options, а имя папки — menu, как вы и сказали
2. Я также очистил решение
3. @AmazingPets Окей, закройте VS и перезапустите его, чтобы проверить, работает ли он.
4. @AmazingPets И является ли первое слово в
menu
названии папки строчным?5. нет, все то же самое, и the options.xml находится в Resource.designer.cs и вызывается оттуда, а не из расположения папки.