10

研究所用のアプリを作成したい。

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

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

次に、学生がアプリケーションを再度開いたときに、既にログが記録されている場合、ユーザーがダッシュボードのログアウト ボタンを押してからログイン画面にリダイレクトしない限り、ログイン画面ではなくダッシュボードに自動的にリダイレクトされます。

どうやってそれをすることができますか?

編集: 2つのインテントと2つのアクティビティを実装しましたが、新しい質問が発生しました。ホームボタンを押してタスクマネージャーからアプリを開くと、残されたアクティビティで開きますが、アイコンから開く最初のアクティビティからもう一度アプリを開き、最後に残っていたアプリを開きますか?

4

3 に答える 3

5

を使用して同様の何かを実装しましSharedPreferencesた。これは私がしました:

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オーバーライドしますonBackPressed。これDashBoardActivityにより、ホーム画面に移動します。

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

それが役に立てば幸い。

于 2012-04-20T21:07:01.400 に答える
4

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

于 2012-04-20T20:49:07.477 に答える