2012-04-20 27 views
10

Chcę utworzyć aplikację dla mojego instytutu.Jak uniknąć powrotu do układu logowania, naciskając przycisk/przycisk Wstecz?

Problem polega na tym, że moja aplikacja będzie miała dwa układy (login i pulpit).

Uczniowie mogą poprawnie wypełnić formularz logowania, wejść na pulpit nawigacyjny, nacisnąć przyciski i wypełnić inne pola. Ale jeśli użytkownik naciśnie przycisk Wstecz, nie powinien powrócić do ekranu logowania, ale pozostać na desce rozdzielczej lub, jeśli to się nie uda, wyjść z aplikacji.

Następnie, jeśli uczeń ponownie otworzy aplikację i jest już zalogowany, powinien automatycznie zostać przekierowany do pulpitu, a nie do ekranu logowania, chyba że użytkownik wciśnie przycisk wylogowania na desce rozdzielczej, a następnie przekieruje go z powrotem na ekran logowania .

Jak możesz to zrobić?

Edit:I wdrożone 2 zamiary i 2 działań oraz nowe pytania powstały mnie to, że po naciśnięciu przycisku w domu i od taskmanager otworzyć aplikację, otwarty w działalności, co pozostało, ale jeśli otworzyć z poziomu ikony, aby ponownie uruchomić aplikację z pierwszego działania, tak jak w przypadku otwarcia w ostatniej zostało?

+0

Jeśli twoje pierwotne pytanie zostanie odebrane, powinieneś zaakceptować odpowiedź i otworzyć nowe pytanie do edycji. W ten sposób uzyska lepszą widoczność. –

+0

Dzięki za tego człowieka, twoja odpowiedź jest w porządku, ale nie to, że chciałem! – SoldierCorp

+0

@soldierCorp Mam ten sam problem.Czy pomożesz mi rozwiązać ten problem. Jestem zdezorientowany z Rozwiązaniem, które zaakceptowałeś. https://stackoverflow.com/questions/45183038/restrict-multiple-login-for-same-user-without-logout. – seon

Odpowiedz

5

Zaimplementowałem coś podobnego przy użyciu SharedPreferences. Zrobiłem to:

LoginActivity

SharedPreferences settings; 
public void onCreate(Bundle b) { 
    super.onCreate(b); 
    settings = getSharedPreferences("mySharedPref", 0); 
    if (settings.getBoolean("connected", false)) { 
     /* The user has already login, so start the dashboard */ 
     startActivity(new Intent(getApplicationContext(), DashBoardActivity.class)); 
    } 
    /* Put here the login UI */ 
} 
... 
public void doLogin() { 
    /* ... check credentials and another stuff ... */ 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putBoolean("connected", true); 
    editor.commit(); 
} 

W swojej DashBoardActivity zastąpić metodę onBackPressed. Spowoduje to przejście z ekranu DashBoardActivity na ekran główny.

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    startActivity(intent); 
} 

Mam nadzieję, że to pomaga.

4

Jeden pomysł polega na początkowym uruchomieniu pulpitu, a następnie uruchomieniu logowania w nowym Activity, jeśli wykryjesz, że użytkownik nie jest zalogowany. Następnie możesz pominąć okno dialogowe logowania w razie potrzeby. Jeśli ustawisz noHistory="true" w loginie Activity w swoim manifeście, uniemożliwi to jego ponowne pojawienie się po naciśnięciu z powrotem.

1

Przenieś zadanie zawierające tę aktywność z tyłu stosu działań. Kolejność czynności w zadaniu pozostaje niezmieniona.

@Override 
public void onBackPressed() { 
    moveTaskToBack(true); 
    super.onBackPressed(); 
} 
Powiązane problemy