关于c#:如何使用visual studio和xamarin关闭android活动

how to close activity android using visual studio and xamarin

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

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

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


调用Finish将关闭并终止Activity,它将按预期工作。删除Avtivity以便在按下"返回"按钮时不会出现的更好方法是将该"活动"的NoHistory设置为true。

如果您有一个LoginActivity和一个DashboardActivity,并且您不希望在登录后按下后退按钮时显示LoginActivity,则可以将LoginActivity的NoHistory设置为true,如下所示。

1
2
3
4
[Activity (NoHistory = true)]
public class LoginActivity : Activity
{
}


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

1
2
StartActivity(typeof(MainActivity));
Finish();

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

1
System.exit(0);


1
2
3
StartActivity(typeof(nameOfActivity));
// add this line
Finish();


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[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();
    }
}

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

1
System.exit(0);

你在这篇关于android的帖子中对这个功能有一个非常好的解释,你可以用于xamarin android:
关闭Android应用程序


您无法关闭当前活动中的先前活动。它只能自己关闭。

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

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

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

在之前的活动中:

1
2
3
4
5
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);

在当前活动中:

1
2
3
4
5
6
7
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.

并回到之前的活动:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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();
        }
    }
}

对于你的第二个问题:

只要用这个:

1
System.exit(0);