现在,我有一个带有PrepareData()方法的活动,用于准备当前活动所需的所有数据,在设置所有内容之前在OnCreate中调用此方法。我调用这个方法,当发现一些问题时,我想要完成当前的活动。
这是我的代码片段:
private void PrepareData()
{
try
{
//some code to prepare data here
}
catch(Exception ex)
{
Intent _startNewActivity = new Intent(this, ActivityB);
this.StartActivity(_startNewActivity);
this.Finish();
}
}像这样的OnCreate
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.ActivityA);
PrepareData()
toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
if (toolbar != null)
{
SetSupportActionBar(toolbar);
SupportActionBar.Title = "Activity A";
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
}
}现在,当应用程序在PrepareData上发现错误时,intent被调用,this.Finish()也被调用,但不知何故,应用程序没有立即完成活动A,它仍然设置工具栏,并调用onResume。
我知道onStop总是在onResume之后调用活动生命周期,但我想知道有什么方法可以在不调用下一个代码的情况下立即完成当前活动?
发布于 2019-11-26 13:55:40
一个活动总是在第一个生命周期中调用,即使你调用了finish,例如onCreate --> onStart --> onResume。Finish call仅计划在onResume之后执行。如果您唯一的问题是阻止某些代码在onResume中执行,请在调用this.Finish()的地方定义一个标志,例如bool finishCalled = true;,然后为了防止工具栏设置标题,只需用if !(finishCalled)将代码包装在该bool中即可。
这应该就行了。
https://stackoverflow.com/questions/59044544
复制相似问题