2016-04-27 13 views
4

ich habe einloggen, registrieren und home page auf meinem projekt. Ich verwende StartActivity(typeof(Register));, um die Registerseite zu öffnen. Wenn der Benutzer bereits Daten eingibt und auf die Schaltfläche "Registrieren" klickt, verwende ich StartActivity(typeof(MainActivity));, um zur Anmeldeseite zurückzukehren. Wenn ich auf meinem Handy auf die Zurück-Schaltfläche klicke, gehe ich zurück zur Seite> Login-Seite> und gehe dann. Ich möchte, dass meine bereits erstellte Aktivität geschlossen wird, nachdem ich eine neue Seite geöffnet habe.wie zum schließen aktivität android mit visual studio und xamarin

Und meine zweite Frage, ich habe Exit-Taste, wie schließe ich meine App mit der Exit-Taste?

Ich benutze Visual Studio 2015 und Xamarin für die Entwicklung von Android-App.

Antwort

2

Um eine Aktivität von Navigation entfernen Sie beenden Schlüsselwörter wie das verwenden:

[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(); 
    } 
} 

Für die zweite Frage, die Sie verwenden können:

System.exit(0); 

Sie haben eine sehr gute Erklärung darüber Feature in diesem Beitrag für Android, dass Sie für Xamarin android verwenden können: Close Android Application

+0

Dank bro es funktioniert jetzt, jetzt muss ich darüber nachdenken, wie dies zu fragmentieren implementieren. Weißt du, wie man es in einem Fragment benutzt? – neneo

5

können Sie Finish Methode verwenden, um Ihre aktuelle Aktivität zu schließen:

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

die App zu schließen, verwenden Sie einfach

System.exit(0); 
+0

Danke, es funktioniert, ich benutze diesen Code vor aber auf Fragment und es wird nicht erkannt – neneo

+0

Für Fragmente müssen Sie FragmentTransaction verwenden und seine Remove-Methode verwenden. Bitte lesen Sie hier und zögern Sie nicht zu fragen, wenn Sie eine Frage dazu haben: https://developer.xamarin.com/guides/android/platform_features/fragments/part_2_-_managing_fragments/ –

+0

ich werde es versuchen, danke: D – neneo

7

Finish Aufruf wird geschlossen und die Activity töten, und es wird wie erwartet. Eine bessere Möglichkeit, eine Avtivity zu entfernen, so dass sie nicht erscheint, wenn die Schaltfläche Zurück gedrückt wird, besteht darin, die NoHistory dieser Aktivität als wahr festzulegen.

Wenn Sie eine LoginActivity und DashboardActivity haben, und Sie wollen nicht die LoginActivity zu zeigen, während nach der Anmeldung zurück-Taste drücken, können Sie Nohistory von LoginActivity wie wahr, wie unten dargestellt.

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

danke, ich lerne etwas Neues: D – neneo

+0

Happy Coding :-) – Sreeraj

2
StartActivity(typeof(nameOfActivity)); 
// add this line 
Finish(); 
+0

Bitte erklären Sie mehr über Ihre Antwort. Lediglich das Posten des Codes könnte anderen nicht helfen. –

+0

Willkommen bei Stack Overflow! Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erläuternden Kommentaren zu überladen, da dies die Lesbarkeit sowohl des Codes als auch der Erklärungen verringert! – FrankerZ

0

Sie können keine frühere Tätigkeit in der aktuellen Aktivität schließen. Es kann nur von selbst geschlossen werden.

Sie können jedoch Daten zur vorherigen Aktivität zurückgeben. Und im Event-Handler OnActivityResult der vorherigen Aktivität können Sie Close Action ausführen.

Dieses Beispiel ist hilfreich für Sie. https://code.msdn.microsoft.com/How-to-close-activity-d51941c8

Der folgende Code zeigt, wie die vorherige Aktivität geschlossen wird.

In früheren Tätigkeit:

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); 

In aktueller Aktivität:

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. 

Und zur vorherige Aktivität zurück:

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(); 
     } 
    } 
} 

Für Ihre zweite Frage:

Nur benutze das:

System.exit(0); 
Verwandte Themen