2012-04-20 16 views
10

私の研究所用のアプリケーションを作成したいと思います。戻るボタン/キーを押してログインレイアウトに戻るのを避けるには?

問題は、アプリケーションに2つのレイアウト(ログインとダッシュボード)があることです。

学生は正しくログインフォームに記入し、ダッシュボードに入り、ボタンを押して、他のフィールドに記入することができます。しかし、ユーザーが戻るボタンを押した場合、ログイン画面に戻るのではなく、ダッシュボードに残っているか、失敗してアプリケーションを終了します。

学生がアプリケーションを再開して既にログに記録されている場合、ダッシュボードのログアウトボタンを押してログイン画面に戻すまで、ログイン画面ではなく自動的にダッシュボードにリダイレクトする必要があります。

どうすればいいですか?

編集:私は2人の意図や2の活動を実施して、新たな疑問が私を生じた残された活動で開いて、私はホームボタンを押して、タスクマネージャから、私はアプリを開いたときということですが、もし最後のものを開くように残されたように、最初の活動から再びアプリを開くためにアイコンから開きますか?

+0

元の質問に回答した場合は、回答を受け入れて編集のための新しい質問を開く必要があります。そのように視界が広がります。 –

+0

この男のおかげで、あなたの答えは大丈夫ですが、私が望んでいたものではありませんでした! – SoldierCorp

+0

@soldierCorp私は同じ問題を抱えています。この問題を解決するのに役立つことができますか?あなたが受け入れた解決策と混同しています。 https://stackoverflow.com/questions/45183038/restrict-multiple-login-for-same-user-without-logout – seon

答えて

5

SharedPreferencesを使用して同様の機能を実装しました。あなたのDashBoardActivityonBackPressedメソッドをオーバーライドして

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

:私はこれをしませんでした。これにより、DashBoardActivityからホーム画面に移動します。

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

希望します。

4

ユーザーがログインしていないことが検出された場合は、最初にダッシュボードを起動して新しいActivityでログインします。必要に応じてログインダイアログをスキップできます。あなたのマニフェストのログインActivitynoHistory="true"を設定した場合は、バックプレスで再び表示されなくなります。

1

このアクティビティを含むタスクをアクティビティスタックの背面に移動します。タスク内のアクティビティーの順序は変更されません。

@Override 
public void onBackPressed() { 
    moveTaskToBack(true); 
    super.onBackPressed(); 
}