Я только что установил последнее обновление 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 может вызвать эту проблему (идентификаторы, которые не обновляются правильно при сохранении ресурса)?Что я могу сделать, чтобы решить эту проблему?
Действительно раздражает необходимость отладки моего проекта, замечание того, что он снова не работает должным образом, необходимость очистки и восстановления, и замечание, что после этого он работает.
Я также уже заметил, что когда он не работает, после очистки и восстановления идентификаторы ресурсов фактически меняются.
Приветствия