0

ユーザーが登録/ログインする必要があるAndroidアプリケーションに取り組んでいますが、これはうまく機能しますが、ユーザーがログアウトしようとすると問題が発生します。

現在、ユーザーがログアウトボタンを押すと、ログインページに戻りますが、アプリから離れてからアプリに戻ると(したがって、まだメモリに残っています)、再度ログインせずにページに戻りますログイン後に表示されます。

ユーザーがログインしているかどうかを記録するために sharedpreference を使用し、表示する画面を決定するために最初に開始するスプラッシュ アクティビティを使用しました。

public class Splash extends SherlockActivity {
    public static final String PREFS_NAME = "PrefsFile";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        boolean loggedin = settings.getBoolean("loggedIn", false);
        if (loggedin){
            Intent intent = new Intent(this, MyLists.class);
            startActivity(intent);
        }
        else{
            Intent intent = new Intent(this, LogIn.class);
            startActivity(intent);
        }
    }

}

そして、私のログアウトボタンは次のようになります

private OnClickListener OnClick_logout = new OnClickListener() {
        public void onClick(View v) {
            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("loggedIn", false);
            editor.putString("email", "");
            editor.putString("password", "");
            editor.commit();
            db.clearLists();
            db.clearProducts();
            Intent intent = new Intent(v.getContext(), Splash.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            v.getContext().startActivity(intent);
        }
    };

ボタンが押された後、スプラッシュアクティビティは現在ユーザーをログイン画面に連れて行きますが、私が言うように、アプリを閉じて戻ってくると、ユーザーは「MyLists」アクティビティに連れて行かれます。

4

1 に答える 1

0

スタック履歴をクリアするには、インテント フラグを使用する必要があります。ログイン画面に戻る前に、

インテント.setFlags(インテント.FLAG_ACTIVITY_NEW_TASK | インテント.FLAG_ACTIVITY_CLEAR_TASK);

また

インテント.setFlags(インテント.FLAG_ACTIVITY_NO_HISTORY);

次に、戻るボタンをクリックすると、アプリが終了します。

また、sharepreference 変数をゼロにフラッシュするか、System.exit() を呼び出すようにしてください。

PS : system.exit() を呼び出すと、ユーザーはアプリを使用するたびにログインします。

それが役立つことを願っています

于 2013-08-27T08:55:43.973 に答える