c# - 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
. 也许有人知道如何解决这个问题?
解决方案
推荐阅读
- reactjs - 中继现代片段错误(期望对象包含数据....)
- python - Django Rest Framework - 如何使用 id 保存并检索其他列?
- authentication - iis express客户端证书无效证书
- c++ - 如何将我计算机中的任何视频加载并显示到 UWP (C++)
- apache-flink - 操作员实例的事件时间是否可能变小?
- c# - EF 核心 2.1。向 MigrationHistory 表添加自定义列
- excel - 如何使用 Power Query 写入数据源?
- android - 服务器套接字不读取 esp8266,为什么?
- java - 字符串连接中 string.concat 和 + 运算符的区别
- c# - 未从文件上传接收任何数据