アプリにログイン画面があります。現在、戻るボタンを押すとログイン画面に戻ることができます。私はそれが起こらないようにしたい。
ユーザーがログインすると、アプリはログインアクティビティを停止して、ユーザーがログインアクティビティに戻れないようにする必要があります。メニュー画面には、すでに停止した後にログインアクティビティを再開するために使用するログアウトボタンがあります。
私は1時間ほど探してテストしてきましたが、答えが見つかりません。
アプリにログイン画面があります。現在、戻るボタンを押すとログイン画面に戻ることができます。私はそれが起こらないようにしたい。
ユーザーがログインすると、アプリはログインアクティビティを停止して、ユーザーがログインアクティビティに戻れないようにする必要があります。メニュー画面には、すでに停止した後にログインアクティビティを再開するために使用するログアウトボタンがあります。
私は1時間ほど探してテストしてきましたが、答えが見つかりません。
ログインアクティビティのマニフェストに設定noHistory = true
します。これにより、アクティビティがバックスタックに保存されなくなります。
次のいずれかを試してください。
ログインアクティビティでログインが成功したら、次のアクティビティを起動した後、アクティビティでfinish()を呼び出します。これにより、ログインアクティビティが効果的に破棄され、アクティビティのバックスタックから削除されます(そのため、これ以上移動できなくなります)。何かのようなもの:
onLoginComplete(){
startActivity(new Intent(this, NextActivity.class));
finish();
}
または、ログインアクティビティのonResumeで、ログインステータスを確認し、trueの場合は終了します。このように、ユーザーがこのアクティビティにアクセスするたびに、既にログインしている場合は閉じられます(実際に表示されることはありません)。
@Override
public void onResume(){
super.onResume();
if(isLoggedIn())
finish();
}
ログインに成功したときにログイン画面を離れるときは、finish()
これを呼び出すと、スタックからアクティビティが削除されます。
ログアウトボタンは、次のようにログインページを再度呼び出す必要があります。
Intent intent = new Intent(TheCurrentActivity.this, YourLoginScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
これにより、ログイン画面が読み込まれ、現在のアクティビティスタックがクリアされ、ログアウト後に戻ることができなくなります。
ログインに成功すると、に電話をかけることができますActvity.finish()
。
ログインアクティビティを再開するには、を使用しますActivity.startActivity(intent)
。
ユーザーがログインアクティビティに戻れないようにする場合はandroid:excludeFromRecents
、次のように、アプリケーションマニフェスト属性のアクティビティ宣言に追加して、最近のスタックから除外します。
<activity android:name=".Login" android:excludeFromRecents="true"></activity>
次に、ログインアクティビティがタスクを完了すると、(ほとんどの場合)アプリの次のアクティビティに進みます。そしてstartActivity()
、新しいネギを呼び出すと、finish();
ログインアクティビティを終了するために呼び出すだけです。
...
startActivity( intentToLaunchNextActivity );
finish();