この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、記事の最後で紹介します)
通信環境など含めたコストパフォーマンスで考えるなら、docomo の irumo でしょう♪
ポイント
Androidのナビゲーションバーには、標準で一番左側にバック(戻る)ボタンが配置されています。
前の画面に戻るためのボタンですが、アプリ側で処理を記述する必要があります。
今回は、TabLayoutとViewPager2を使用したタブレイアウトの画面遷移で、戻るボタンによるヒストリーバック機能の実装を紹介いたします。
ヒストリーバック
タブレイアウト画面をもつアプリの画面遷移では、TabLayoutで遷移先を指定し、ViewPager2でFragmentを表示します。
TabLayoutとViewPager2をもつActivityで画面遷移やヒストリーバックを処理、Fragmentで画面遷移の履歴を追加します。
ヒストリーバック処理(Activity)
ナビゲーションバーの戻るボタンのフックはonBackPressedを使用しますが、Android14で使用不可になりましたので、OnBackPressedDispatcherを使用します。
画面遷移の履歴では、最新のタブ位置ですので、ひとつ前のタブ位置を使用します。
画面遷移の履歴追加はonResumeを使用していますので。遷移先履歴を削除してから画面遷移を行います。
…
public TabLayout tabs;
public ViewPager2 pager;
public List<Integer> history = new ArrayList<>();
…
// onCreate //
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
…
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (tabs != null) {
// 最新履歴を削除
if (history.size() > 0) history.remove(history.size() -1);
// 遷移先を取得
int page = history.size() > 0 ? history.get(history.size() -1) : 0;
// 遷移先履歴を削除
if (history.size() > 0) history.remove(history.size() -1);
// 遷移
if (tabs != null) Objects.requireNonNull(tabs.getTabAt(page)).select();
}
}
});
…
Android14対応(非推奨のonBackPressedの対応)について詳しく知りたい↓↓↓
画面遷移の履歴追加(Fragment)
onResumeで現在のタブ位置(SelectedTabPosition)を画面遷移の履歴を追加します。
…
private MainActivity mainActivity;
…
// onCreate //
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mainActivity = (MainActivity) getActivity();
…
}
…
// onResume //
@Override
public void onResume() {
super.onResume();
mainActivity.history.add(mainActivity.tabs.getSelectedTabPosition());
…
サンプルでは、MainActivityの変数を直接操作していますが、MainActivityに画面遷移の履歴追加メソッドを実装して、それを呼び出す実装のほうが、よりスマートだと思います。
今回は、ここまでです。
画面遷移のヒストリーバック機能を実装している Androidアプリです。
戻るボタンのタップで前の画面に戻ります。
誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にあるコメントか、
こちらから、お願いいたします♪
ポチッとして頂けると、
次のコンテンツを作成する励みになります♪
これからAndroidのアプリ開発やJavaでの開発を始めたい方へ
アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、Android のアプリ開発ができるようになるには、かなりの時間がかかります。オンラインスクールでの習得を、強くおススメします。
未経験者からシステムエンジニアを目指すのに最適かと、
まずは無料相談から♪
未経験者からプログラマーを目指すのに最適かと、
まずは無料カウンセリングから♪
カリキュラムとサポートがしっかりしています、
お得なキャンペーンとかいろいろやっています♪
ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適かと、
まずは無料オンライン相談から♪
参考になったら、💛をポッチとしてね♪