【问题标题】:how to close activity android using visual studio and xamarin如何使用 Visual Studio 和 xamarin 关闭活动 android
【发布时间】:2016-08-21 10:07:02
【问题描述】:

我的项目有登录、注册和主页。我使用StartActivity(typeof(Register));打开注册页面。当用户已经插入数据并单击注册按钮时,我使用StartActivity(typeof(MainActivity)); 再次返回登录页面。 当我点击手机上的返回按钮时,它返回注册页面>登录页面>然后退出。我希望在打开新页面后关闭已创建的活动。

我的第二个问题,我有退出按钮,如何使用退出按钮关闭我的应用程序?

我正在使用 Visual Studio 2015 和 Xamarin 开发 Android 应用程序。

【问题讨论】:

    标签: c# android xamarin visual-studio-2015 xamarin.android


    【解决方案1】:

    您不能在当前活动中关闭以前的活动。只能自行关闭。

    但是您可以将数据返回到以前的活动。并且在前一个活动的事件处理程序 OnActivityResult 中,您可以执行关闭操作。

    此示例将对您有所帮助。 https://code.msdn.microsoft.com/How-to-close-activity-d51941c8

    下面的代码显示了如何关闭以前的活动。

    在之前的活动中:

    Intent intent = new Intent(this, typeof(RegisterActivity)); 
    
    //for get result, we should use method StartActivityForResult 
    //the second param is the request code, it is the ID of this request, it should be >= 0 
    StartActivityForResult(intent, 1);
    

    在当前活动中:

    Intent intent = new Intent(this, typeof(RegisterActivity)); 
    intent.PutExtra("result", "Success"); 
    
    SetResult(Result.Ok, intent); 
    
    Finish(); 
    //when back to login activity, the OnActivityResult event will be trigger.
    

    然后回到之前的活动:

    protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) 
    { 
        base.OnActivityResult(requestCode, resultCode, data); 
    
        //when regester activity retrun data, it will be execute 
    
        if (requestCode == 1 && resultCode == Result.Ok) 
        { 
            string result = data.GetStringExtra("result"); 
            if (result == "Success") 
            { 
                Finish(); 
            } 
        } 
    }
    

    第二个问题:

    就用这个吧:

    System.exit(0);
    

    【讨论】:

      【解决方案2】:
      StartActivity(typeof(nameOfActivity));
      // add this line
      Finish();
      

      【讨论】:

      • 请详细说明您的回答。仅仅发布代码可能对其他人没有帮助。
      • 欢迎来到 Stack Overflow!虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性 cmets 挤满你的代码,因为这会降低代码和解释的可读性!
      【解决方案3】:

      调用Finish 将关闭并杀死Activity,它会按预期工作。删除Avtivity 以使其在按下后退按钮时不会出现的更好方法是将该活动的NoHistory 设置为true。

      如果您有LoginActivityDashboardActivity,并且您不希望在登录后按返回按钮时显示LoginActivity,您可以将LoginActivity 的NoHistory 设置为true,如下所示。

      [Activity (NoHistory = true)]
      public class LoginActivity : Activity
      {
      }
      

      【讨论】:

        【解决方案4】:

        您可以使用Finish 方法关闭您当前的活动:

        StartActivity(typeof(MainActivity));
        Finish();
        

        要关闭应用程序,只需使用

        System.exit(0);
        

        【讨论】:

        • 谢谢它的工作,我之前使用这个代码,但在片段上,它没有被检测到
        • 对于 Fragment,您需要使用 FragmentTransaction 并使用它的 Remove 方法。请在此处阅读,如果您对此有任何疑问,请随时提出:developer.xamarin.com/guides/android/platform_features/…
        【解决方案5】:

        要从导航中删除活动,您可以使用 finish 关键字:

        [Activity(Label = "MainActivity", MainLauncher = true, Icon = "@drawable/icon")]
        public class MainActivity: Activity
        {
            protected override async void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
        
                var intent = new Intent(this, typeof(SecondActivity));
                intent.SetFlags(ActivityFlags.NewTask);
                //Navigation to SecondActivity
                StartActivity(intent);
                //delete main activity from navigation
                Finish();
            }
        }
        

        对于第二个问题,您可以使用:

        System.exit(0);
        

        你在这篇文章中对这个特性有一个很好的解释,你可以将它用于 xamarin android: Close Android Application

        【讨论】:

        • 谢谢兄弟,它现在可以工作了,现在我需要考虑如何实现它来分段。你知道如何在片段中使用它吗?
        猜你喜欢
        • 2023-02-06
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-18
        • 2019-09-10
        相关资源
        最近更新 更多