Android StudioでBottomNavigationActivityを使用している場合、設定画面(SettingsFragmentCompat)を独立した画面として表示し、BottomNavigationViewを非表示にする方法を紹介します。
BottomNavigationActivityの構造
通常、BottomNavigationActivityではActivityが1つあり、その中でFragmentを切り替えて表示します。設定画面もFragmentとして実装できますが、以下のような問題が発生することがあります。
- BottomNavigationViewが設定画面でも表示されてしまう
- 設定画面でボトムバーを非表示にしたいが、ナビゲーションの機能は維持したい
設定画面の作成と表示方法
1. SettingsFragmentCompatの作成
まず、設定画面を表示するFragmentを作成します。
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
}
2. 設定画面を表示するボタンを追加
メニューに設定ボタンを追加するには、res/menuディレクトリにmenu_main.xmlを作成し、以下のように設定します。
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_settings"
android:title="設定"
android:icon="@drawable/ic_settings"
android:showAsAction="always" />
</menu>
3. ボタンを押した際に設定画面へ遷移
Activityでメニューのクリックイベントを処理し、SettingsFragmentを表示します。
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.action_settings) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, new SettingsFragment())
.addToBackStack(null) // 戻るボタンで元の画面に戻るため
.commit();
findViewById(R.id.bottom_navigation).setVisibility(View.GONE); // ボトムバーを非表示
return true;
}
return super.onOptionsItemSelected(item);
}
4. 設定画面から戻った際にボトムバーを再表示
設定画面を閉じたときにBottomNavigationViewを再表示するには、OnBackStackChangedListener
を使用します。
getSupportFragmentManager().addOnBackStackChangedListener(() -> {
if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
findViewById(R.id.bottom_navigation).setVisibility(View.VISIBLE);
}
});
まとめ
Android StudioのBottomNavigationActivityで設定画面を実装する際、以下のポイントを押さえることで、スムーズに遷移できます。
- 設定画面はPreferenceFragmentCompatで作成
- メニューにボタンを追加し、クリック時にFragmentを切り替える
- 設定画面を開く際にBottomNavigationViewを非表示にし、閉じたら再表示する
この方法を活用して、設定画面をスムーズに実装しましょう。
コメント