我用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";
}
如果我从此方法FindViewById
注释第1行,则返回null。我想为MainActivity初始化UI会花费一些时间,但是对我来说这很奇怪,因为我认为UI元素应该在调用SetContentView
之后已经初始化。也许有人知道如何解决这个问题?