2012-04-23 11 views
0

私のアプリにはログインとログアウトの仕組みがあります。ユーザがログアウトボタンを押したときにタスクスタックをクリアして、アプリケーションを再び起動したときに再度ログインする必要があるようにしたい。私はオンライン見上げると、ほとんどの場合、人々はそれを達成するために、これを使用していた。ログアウト機能android

Intent i = new Intent(Intent.ACTION_MAIN); 
i.addCategory(Intent.CATEGORY_HOME); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(i); 
finish(); 

このコードでこの問題が発生した:

ショッピング - >ログインアクティビティ(メインランチャ活性)[uernameとパスワードのフィールドは空白です] - >ログアウト - >ホームをクリックした場合 その後、私はこれを行うとき:

家から - >起動アプリ(ログイン画面でユーザー名とパスワードがまだ存在する) - >戻るボタンを押して家にナビゲート - >アプリをもう一度起動 - >ユーザー名とパスワードをクリア

ログアウト機能を作成するにはどうすればよいでしょうか?

+0

:acivityで

MyApplication.loginDialogShown = true; 

:ログインダイアログコードで

public boolean loginDialogShown = false; 

テキストをnullにするメインアクティビティのonResume()関数でそのうまく動作しますが、他のソリューションは大歓迎です! :) – Ash

答えて

0

共有設定データベースに保存することができます。また、ユーザーログアウトで同じキーのデータベースから値を消去することもできます。

ユーザーがログアウトせずに直接アプリを終了した場合、ユーザー名とパスワードが既に存在するかどうかを確認することで、それらをedittextに表示することができます。

は、データベースから

SharedPreferences settings = getSharedPreferences("DB_NAME", 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.remove("user"); 
    editor.remove("pass"); 
    editor.clear(); 
    editor.commit(); 
+0

私はすでに共有設定でユーザーに関連する多くの情報を保存しているので、私はそれをしたいと思っています。とにかくあなたの答えをありがとう! :) – Ash

0

オーバーライドApplicationクラスをクリアして、パブリックフィールドを作成するために、データベース

SharedPreferences settings = getSharedPreferences("DB_NAME", 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putString("user", username); 
    editor.putString("pass", password); 
    editor.commit(); 

に保存(またはゲッター/セッターとプライベート)にします。

アプリケーションクラスで

:私は現在、編集を設定することでこれをやっている

if (!MyApplication.loginDialogShown){ loginDialog.show(); } 

http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/

関連する問題