我刚安装了适用于Visual Studio的Xamarin的最新更新。 从那以后,android无法在我的活动布局中找到视图。 显然,当我保存资源时,自动生成的ID无法正确更新。
如果我清理项目并重建,我的应用运行正常。但是,经过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更新会导致此问题(保存资源时未正确更新的ID)?我该怎么做才能解决这个问题?
必须调试我的项目真的很烦人,注意它再次运行不正常,不得不清理和重建,并注意到之后它正在工作。
我也已经注意到,当它不能正常工作时,在我清理并重建资源之后,事实上Ids已经改变了。
干杯