Подтвердить что ты не робот

Visual Studio 2015 - Xamarin - Android - Получение "resource.id не содержит определения для xxx", когда я пытаюсь сделать что-либо в файле .cs

Добавление дополнительных действий.cs и макета axml с использованием Visual Studio 2015.

Я очень новичок в разработке Xamarin и Android, но несколько лет работал разработчиком на VB, а теперь и на С#. У меня есть простое приложение на Android 4.2, которое становится все сложнее по мере продвижения вперед. Простое дело в том, что я хочу добавить в проект дополнительный GpsAction.cs и соответствующий макет Gps.axml. Кажется невозможным найти правильный синтаксис комбинации для достижения этой цели. У меня есть mainActivity с main.axml. В VS 2015 очень просто добавлять новые, но я продолжаю получать "resource.id не содержит определения". Я был бы очень признателен за вашу помощь с этим

namespace AddCam
{
[Activity(Label = "GpsActivity")]
public class GpsActivity : Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.GpsLayout);

        string c = FindViewById<TextView>(**Resource.Id.textView1**).Text;
        // Create your application here
    }
}
4b9b3361

Ответ 1

Для людей, которые по-прежнему сталкиваются с этой проблемой, значение по умолчанию Построение действия файла макета будет установлено на TransformFile. Выберите макет, перейдите в Свойства макета и в панели свойств выберите AndroidResource в качестве действия по созданию. Очистите свой проект, и он должен работать.

Ответ 2

Я изменил текстовое поле "id" с "@+id/imageView1" на "1", сохранил, перестроил и вернул обратно на "@+id/imageView1", это исправило. Я хотел бы добавить, что вся эта проблема возникла из

  1. Добавление нового действия и макета.
  2. Использование существующего кода из другого моего приложения.
  3. Копирование и вставка кода из исходного приложения в новое действие и макет.

Все довольно распространенные вещи, реальная проблема, казалось, всегда заключалась в добавлении любых новых видов деятельности и макетов в основной вид деятельности. Это может стать очень запутанным и без (известного мне) логического способа решить проблему с Xamarin. Не поймите меня неправильно по сравнению с 10 лет назад (последнее мобильное приложение, которое я пытался написать) Xamarin - это рай. Хорошие программисты, теперь, если я могу только выяснить, почему ключевое слово "this" является ошибкой при добавлении Activity.cs

Ответ 3

Просто добавьте пространство имен, такое как Android.Resource.Id - это решение для меня

Ответ 4

Что сработало для меня (Visual Studio 2017, открытие старого проекта Xamarin):

  1. Удалить папки obj и bin, собрать.
  2. Если ошибки, перезапустите Visual Studio (я знаю боль).
  3. Строить снова

Теперь Ресурс будет виден (конечно, если вы его правильно определили).

Ответ 5

Вы должны добавить установленное значение для android:id="@+id/button1" в axml приложения, а затем перестроить проект и повторить попытку. например, Button button = (Button)FindViewById(Resource.Id.button1);.

Ответ 6

Очищена страница Main.axml и Reset, и она работает.

Ответ 7

Лучшее решение, которое я нашел, - это построить решение. Выберите "Построить решение" из меню "Сборка" (или Ctrl + Shift + B). Это действие решит проблему.

Ответ 8

Моя проблема заключалась в том, что я пытался отладить проект Android Xamarin (собственный) с помощью Xamarin Live Player, подключив его с помощью USB-кабеля и выбрав устройство для отладки, и решил проблему

Ответ 9

Проверьте, отсутствуют ли эти пространства имен в файле макета -

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"

Ответ 10

Убедитесь, что ваш axml правильно сформирован, и перестройте решение, которое должно работать. Если вы продолжаете сталкиваться с той же проблемой, удалите axml и добавьте ее снова, а затем создайте решение.

Ответ 11

В Visual Studio 2019 при добавлении нового макета Android в проект он добавляется в виде XML файла. У меня уже были некоторые созданные ранее макеты в папке Resources/layout с расширением .axml (не .xml), и для меня изменилось расширение .xml ->.axml.

Ответ 12

Я понимаю, что эта проблема очень старая, но я столкнулся с ней и в Visual Studio 2019 и нашел решение.

Проблема возникает, для меня, при добавлении элемента в макет, а затем при попытке добавить код. Похоже, проблема связана со способом построения проекта.

Добавьте элемент в макет, затем создайте свой проект перед добавлением дополнительного кода. Очевидно, Resource.Id не обновляется с дополнительными членами до тех пор, пока не будет скомпилирован, и пытается обратиться к новому элементу в коде до того, как Resource.Id обнаружит, что это препятствует созданию проекта.

Ответ 13

Как сказал Маниакз, в VS 2019 мне просто нужно было изменить XML на расширение axml до макета в папке макета под ресурсами

Ответ 14

Для тех, кто ищет ответ, несмотря на запуск команды clean/build/rebuild, которая не работает для меня:

Я недавно установил ряд инструментов для разработки xamarin в VS. Хотя сборка/перестройка, возможно, действительно сработала, в моем случае, я полагаю, что также исправило закрытие и повторное открытие VS. Я почти уверен, что у меня было несколько проблем, в первую очередь связанных с недавно установленными инструментами (в моем случае Android SDK), требующими перезагрузки VS. Если вы работаете над проектом, в котором уже установлены необходимые инструменты, попробуйте, как говорили другие, - построить/восстановить.

Ответ 15

Проверьте файл класса Resource.Designer. Будет такой класс, как public partial class Id. Там записаны целочисленные идентификаторы элементов управления. Используйте их вместо Resource.Id