私は何かをする前に、ユーザがログインしているかどうかをチェックする必要がある簡単なアプリケーションを持っています。 は、これを行うために、私はこのようなApplication
クラスを継承した:アプリケーションのサブクラスから開始するアクティビティを決定する
public class GBApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
if (userIsLoggedIn()) {
Intent overviewActivity = new Intent(this, Overview.class);
overviewActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(overviewActivity);
}
}
}
userIsLoggedIn()
がSharedPreferences
ファイルに保存されているブール値を返します。
すべて動作しますが、Overview
アクティビティから戻ると、デフォルトのアクティビティ(MainActivity
)にリダイレクトされ、AndroidManifest.xml
ファイルから削除されるとエラーが発生します。 また、これは非アクティビティクラスなのでfinish()
と呼ぶことはできません。
Overview
クラスから戻ったらプログラムを終了できますか?私はMainActivity
に値を渡す解決策を見つけました。そこからfinish()
を呼び出してください。しかし、これは複雑に思えます。 他に何ができますか?あなたのケースでシャットダウンすることです
これはあなたが単に(onBackPressedをオーバーライドすることができAndroidManifest.xml
overviewActivityのonBackPressed()をオーバーライドするだけではどうですか? – Taslim
これは異常に悪いことです。プロセスが作成されるたびに、この特定のプロセスでアクティビティが必要ない場合でも、アクティビティを開始します。 'MainActivity'は両方のシナリオを扱うようにしてください(例えば、それぞれのケースの異なるUIのためのフラグメントを使用する)。あるいは、 'MainActivity'が必要に応じて' Overview'を開始することを決定してください。 – CommonsWare
@CommonsWare私はあなたの助言に従い、何を始めるべきかを判断する唯一の役割を果たすダミー活動を作成します。 しかし、あなたの答えを広げて、何が悪いのかをもっと教えてください。私たちは仲介活動を始めていないので、簡単ではないでしょうか? – SnuKies