Xamarin 最新更新 findviewbyid 返回 null

Xamarin latest update findviewbyid returns null

提问人:user3582780 提问时间:6/7/2018 更新时间:6/7/2018 访问量:260

问:

我刚刚安装了 Xamarin for Visual Studio 的最新更新。 从那以后,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)?我能做些什么来解决这个问题?

不得不调试我的项目真的很烦人,注意到它再次运行不正常,并且必须清理和重建,然后注意到它正在工作。

我也已经注意到,当它不起作用时,在我清理和重建资源 ID 后,资源 ID 实际上发生了变化。

干杯

Visual-Studio Xamarin NullReferenceException 更新 FindViewById

评论

0赞 SushiHangover 6/7/2018
您使用的是什么实际版本?(因为有稳定版、测试版、阿尔法版发布渠道......
0赞 user3582780 6/7/2018
Microsoft Visual Studio 2015 Update 2 (for Windows) Xamarin 4.9.0.749 Xamarin Designer 4.10.58 Xamarin.Android SDK 8.2.0.15 不知道是不是测试版。我想不是,因为他们实际上将我推向了更新。
0赞 user3582780 6/14/2018
我可以确认这个问题也发生在其他项目上,所以这肯定是导致问题的更新

答: 暂无答案