Xamarin最新更新findviewbyid返回null

时间:2018-06-07 07:37:28

标签: visual-studio xamarin nullreferenceexception updating findviewbyid

我刚安装了适用于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已经改变了。

干杯

0 个答案:

没有答案