【问题标题】:Finish Current Activity Immediately立即完成当前活动
【发布时间】:2019-11-26 05:49:49
【问题描述】:

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

这是我的代码的 sn-p:

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(),但不知何故应用程序没有立即完成 Activity A,它仍然设置工具栏,并调用 onResume。

我知道 onStop 总是在 onResume 之后调用的活动生命周期,但我想知道有没有办法立即完成当前活动,而不调用下一个代码?

【问题讨论】:

    标签: android xamarin lifecycle


    【解决方案1】:

    一个活动总是在第一个生命周期中调用,即使你调用了完成,例如onCreate --&gt; onStart --&gt; onResume。完成呼叫仅安排在onResume 之后执行。如果您唯一的问题是阻止某些代码在 onResume 中执行,请在调用 this.Finish() 的位置定义一个标志,例如 bool finishCalled = true;,然后防止工具栏设置标题,只需将代码用 @987654325 包装在该布尔值内@。

    应该可以的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 2018-07-01
      相关资源
      最近更新 更多