首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >立即完成当前活动

立即完成当前活动
EN

Stack Overflow用户
提问于 2019-11-26 13:49:49
回答 1查看 200关注 0票数 0

现在,我有一个带有PrepareData()方法的活动,用于准备当前活动所需的所有数据,在设置所有内容之前在OnCreate中调用此方法。我调用这个方法,当发现一些问题时,我想要完成当前的活动。

这是我的代码片段:

代码语言:javascript
复制
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

代码语言:javascript
复制
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之后调用活动生命周期,但我想知道有什么方法可以在不调用下一个代码的情况下立即完成当前活动?

EN

回答 1

Stack Overflow用户

发布于 2019-11-26 13:55:40

一个活动总是在第一个生命周期中调用,即使你调用了finish,例如onCreate --> onStart --> onResume。Finish call仅计划在onResume之后执行。如果您唯一的问题是阻止某些代码在onResume中执行,请在调用this.Finish()的地方定义一个标志,例如bool finishCalled = true;,然后为了防止工具栏设置标题,只需用if !(finishCalled)将代码包装在该bool中即可。

这应该就行了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59044544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档