ここでは、最初のユーザーが Facebook 経由でログインする必要があるアプリを開発しています。そのため、ログイン ボタンを使用したログイン アクティビティが 1 つあります。ログインに成功した後、ユーザーはタブ アクティビティ A に移動します。タブ ウィジェットには、アクティビティ B と C と言う 2 つのアクティビティがあります。今、私がしなければならないことは、ユーザーがアクティビティ C から戻るボタンを押したときに、ユーザーがアクティビティ B に移動し、ユーザーがアクティビティ B から戻るボタンを押すと、ユーザーはアクティビティ A に移動する必要があります。ユーザーがアクティビティ A から戻るボタンを押すと、ユーザーはホーム画面に移動するか、アプリを終了する必要があります。ここでも、ユーザーがアプリ アイコンを押してアプリを起動すると、ユーザーはログイン ボタンのあるログイン アクティビティではなく、タブ アクティビティ A に直接移動する必要があります。ログアウト用のメニューボタンを作成しました。ユーザーがログアウトすると、再びログイン アクティビティに移動する必要があります...何をする必要がありますか?
2 に答える
まず、SharedPreference
ユーザーがログインしている場合はいくつかの設定を保存し、ユーザーがログインしている場合は設定を確認してから、Activity
Aにバイパスします
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
.
ユーザーがログアウトした場合は、からログイン設定を削除しますSharedPreference
。戻るボタンを押すには、関数をオーバーライドして戻るボタンを押す必要がありますonBackPressed()
。Activity
C では、呼び出すonBackPressed()
必要があります
sharedPrefrence.putString("selected_tab", 1);
タブアクティビティを開始し、タブアクティビティでyour_tab_host.setCurrentTab(sharedPreferences.getString("selected_tab")
In Activity
B in のonBackPressed()
ときは、コールする必要があります
sharedPrefrence.putString("selected_tab", 0);
タブアクティビティを開始し、タブアクティビティで
your_tab_host.setCurrentTab(sharedPreferences.getString("selected_tab")
そして最後に In Activity
A in のときonBackPressed()
は、呼び出す必要がありますfinish()
私のタブアクティビティ(TabViewLayout)で、メソッドを作成しましたが、
public void switchTabBar(int tab) {
tabHost.setCurrentTab(tab);
}
@Override
public void onBackPressed() {
// Called by children
TabViewLayout.this.finish();
}
私のアクティビティAでは、
@Override
public void onBackPressed() {
this.getParent().onBackPressed();
}
私のアクティビティBでは、
@Override
public void onBackPressed() {
TabViewLayout parentTab = (TabViewLayout) this.getParent();
parentTab.switchTabBar(0);
}
私のアクティビティ C (最終アクティビティ) では、
@Override
public void onBackPressed() {
TabViewLayout parentTab = (TabViewLayout) this.getParent();
parentTab.switchTabBar(1);
}