首页 > 解决方案 > FindViewById 在 StartActivity 之后返回 null

问题描述

我用 Xamarin 编写了一个 Android 应用程序。我有一个显示开始屏幕并初始化应用程序的开始活动。初始化应用程序后,我完成了活动并开始下一个活动。这是方法StartActivity.OnCreate

        protected override async void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.StartScreen);

            // initializing app
            string status = await DownloadSomeString();                 
            Finish();

            // starting a main activity after initialization
            var intent = new Intent(this, typeof(MainActivity));
            StartActivity(intent);
        }

这是方法MainActivity.OnCreate

    protected override async void OnCreate(Bundle savedInstanceState)
    {            
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.MainActivity);                

        await Task.Delay(3000); // #1 
        // if the prevoius line is commented the textview is null
        var textView = FindViewById<TextView>(Resource.Id.Text);
        textView.Text = "Some text";
    }

如果我从此方法中注释第 1 行,则FindViewById返回 null。我想为 MainActivity 初始化 UI 需要一些时间,但这对我来说很奇怪,因为我认为 UI 元素应该在调用SetContentView. 也许有人知道如何解决这个问题?

标签: c#androidxamarinfindviewbyid

解决方案


推荐阅读