Последнее обновление Xamarin findviewbyid возвращает ноль - PullRequest
0 голосов
/ 07 июня 2018

Я только что установил последнее обновление Xamarin для Visual Studio.С тех пор Android не может найти представления в моих макетах деятельности.Видимо, автоматически сгенерированные идентификаторы не обновляются правильно, когда я просто сохраняю свои ресурсы.

Если я очищаю проект и перестраиваюсь, мое приложение работает нормально.Но примерно через 20 минут кодирования проблема снова возникнет.

Простой код: Resources / Layout / Main.axml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="25px"
    android:minHeight="25px"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="9dp"
        android:paddingBottom="9dp">
        <Button
            android:text="@string/action_stockcount"
            android:layout_width="match_parent"
            android:layout_height="90dp"
            android:id="@+id/btnStockCount"
            android:layout_marginLeft="18dp"
            android:layout_marginRight="18dp"
            android:layout_marginStart="9dp"
            android:layout_marginTop="9dp"
            android:textColor="@color/menu_button_text"
            android:textSize="30dp"
            android:drawableLeft="@drawable/menu_stockcount_big"
            android:paddingLeft="18dp"
            android:paddingRight="18dp"
            android:paddingBottom="9dp"
            android:paddingTop="9dp" />
    </LinearLayout>
</ScrollView>

MainActivity.designer.cs:

using ...

namespace MyApp.Droid.Activities
{
    public partial class MainActivity
    {
        private Button btnStockCount;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Main);
            SetTitle(Resource.String.ApplicationName);

            btnStockCount = FindViewById<Button>(Resource.Id.btnStockCount);

            // From time to time, this gives a NullReferenceException
            btnStockCount.Click += BtnStockCount_Click;

            InitComplete(savedInstanceState);
        }
    }
}

MainActivity.cs (не совсем важно):

using ...

namespace MyApp.Droid.Activities
{
    public partial class MainActivity : Activity
    {
        private void BtnStockCount_Click(object sender, EventArgs e)
        {
            StartActivity(typeof(IndexStockCountActivity));
        }
    }
}

Я знаю, как работает Android, я знаю, как работает Xamarin.Почему последнее обновление Xamarin может вызвать эту проблему (идентификаторы, которые не обновляются правильно при сохранении ресурса)?Что я могу сделать, чтобы решить эту проблему?

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

Я также уже заметил, что когда он не работает, после очистки и восстановления идентификаторы ресурсов фактически меняются.

Приветствия

...