From b4cae9f6105da6a8cb622a33e40a43b943308f63 Mon Sep 17 00:00:00 2001
From: Astatin3 <77305074+Astatin3@users.noreply.github.com>
Date: Sun, 28 Jul 2024 09:28:00 -0600
Subject: [PATCH] Fix navigation crashes, add transitions
---
README.md | 2 +-
.../scoutingapp2025/MainActivity.java | 29 +++++
.../ui/data/CompileFragment.java | 1 -
.../ui/scouting/MatchScoutingFragment.java | 6 +-
.../ui/scouting/PitScoutingFragment.java | 6 +-
.../{TBAView.java => TBAFragment.java} | 9 +-
.../ui/transfer/TransferFragment.java | 30 ++---
...tor.java => TransferSelectorFragment.java} | 10 +-
app/src/main/res/anim/enter_anim.xml | 8 ++
app/src/main/res/anim/exit_anim.xml | 12 ++
app/src/main/res/anim/pop_enter_anim.xml | 8 ++
app/src/main/res/anim/pop_exit_anim.xml | 12 ++
...outing.xml => fragment_scouting_match.xml} | 4 +-
...scouting.xml => fragment_scouting_pit.xml} | 0
.../main/res/navigation/mobile_navigation.xml | 110 ++++++++++++++----
gradle/libs.versions.toml | 2 +-
16 files changed, 181 insertions(+), 68 deletions(-)
rename app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/{TBAView.java => TBAFragment.java} (97%)
rename app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/{TransferSelector.java => TransferSelectorFragment.java} (73%)
create mode 100644 app/src/main/res/anim/enter_anim.xml
create mode 100644 app/src/main/res/anim/exit_anim.xml
create mode 100644 app/src/main/res/anim/pop_enter_anim.xml
create mode 100644 app/src/main/res/anim/pop_exit_anim.xml
rename app/src/main/res/layout/{fragment_match_scouting.xml => fragment_scouting_match.xml} (96%)
rename app/src/main/res/layout/{fragment_pit_scouting.xml => fragment_scouting_pit.xml} (100%)
diff --git a/README.md b/README.md
index 6fb1a4e..20f1ed8 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,6 @@ Ridgebotics 2025 scouting app in Android
#### Data Analysis:
- Make a word cloud for the compiled mode of text input type
#### Functionality:
-- Fix navigation crashes.
- Make pit and match data field builder UIs. I don't want to have to keep editing a variable
@@ -32,6 +31,7 @@ Ridgebotics 2025 scouting app in Android
- Add "history" view type to the teams view menu.
- Sentiment analysis of text input type
#### Functionality:
+- Fix navigation crashes.
- Make everything use Fragments instead of views that toggle visibility
- Make the file browser UI
- Bluetooth data sync
diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/MainActivity.java b/app/src/main/java/com/astatin3/scoutingapp2025/MainActivity.java
index 826e14a..45e1dd7 100644
--- a/app/src/main/java/com/astatin3/scoutingapp2025/MainActivity.java
+++ b/app/src/main/java/com/astatin3/scoutingapp2025/MainActivity.java
@@ -1,6 +1,7 @@
package com.astatin3.scoutingapp2025;
import android.os.Bundle;
+import android.view.MenuItem;
import com.astatin3.scoutingapp2025.scoutingData.fields;
import com.astatin3.scoutingapp2025.utility.SentimentAnalysis;
@@ -11,8 +12,11 @@ import com.google.android.material.bottomnavigation.BottomNavigationView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.navigation.AnimBuilder;
import androidx.navigation.NavController;
import androidx.navigation.NavDestination;
+import androidx.navigation.NavOptions;
+import androidx.navigation.NavOptionsBuilder;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
@@ -20,9 +24,13 @@ import androidx.navigation.ui.NavigationUI;
import com.astatin3.scoutingapp2025.databinding.ActivityMainBinding;
import com.astatin3.scoutingapp2025.SettingsVersionStack.latestSettings;
+import com.google.android.material.navigation.NavigationBarView;
import java.util.Objects;
+import kotlin.Unit;
+import kotlin.jvm.functions.Function1;
+
public class MainActivity extends AppCompatActivity {
@@ -96,15 +104,36 @@ public class MainActivity extends AppCompatActivity {
R.id.navigation_settings)
.build();
+// appBarConfiguration.set
+
navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
+
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
+ navView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
+ @Override
+ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
+ clearBackStack();
+ navController.navigate(item.getItemId(), savedInstanceState, new NavOptions.Builder()
+ .setEnterAnim(R.anim.enter_anim)
+ .setExitAnim(R.anim.exit_anim)
+ .setPopEnterAnim(R.anim.pop_enter_anim)
+ .setPopExitAnim(R.anim.pop_exit_anim).build()
+ );
+ return true;
+ }
+ });
+
}
@Override
public boolean onSupportNavigateUp() {
return navController.navigateUp() || super.onSupportNavigateUp();
}
+
+ private void clearBackStack() {
+ navController.popBackStack(navController.getGraph().getStartDestinationId(), false);
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/CompileFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/CompileFragment.java
index 35dbe51..142bd06 100644
--- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/CompileFragment.java
+++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/data/CompileFragment.java
@@ -10,7 +10,6 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.astatin3.scoutingapp2025.databinding.FragmentDataCompileBinding;
-import com.astatin3.scoutingapp2025.databinding.FragmentPitScoutingBinding;
public class CompileFragment extends Fragment {
FragmentDataCompileBinding binding;
diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/MatchScoutingFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/MatchScoutingFragment.java
index 0c1e5ff..6c6c443 100644
--- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/MatchScoutingFragment.java
+++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/MatchScoutingFragment.java
@@ -14,7 +14,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.astatin3.scoutingapp2025.SettingsVersionStack.latestSettings;
-import com.astatin3.scoutingapp2025.databinding.FragmentMatchScoutingBinding;
+import com.astatin3.scoutingapp2025.databinding.FragmentScoutingMatchBinding;
import com.astatin3.scoutingapp2025.scoutingData.ScoutingDataWriter;
import com.astatin3.scoutingapp2025.types.data.dataType;
import com.astatin3.scoutingapp2025.types.frcMatch;
@@ -29,12 +29,12 @@ import java.util.function.Function;
public class MatchScoutingFragment extends Fragment {
- private FragmentMatchScoutingBinding binding;
+ private FragmentScoutingMatchBinding binding;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
- binding = FragmentMatchScoutingBinding.inflate(inflater, container, false);
+ binding = FragmentScoutingMatchBinding.inflate(inflater, container, false);
DataManager.reload_match_fields();
diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/PitScoutingFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/PitScoutingFragment.java
index dc21c40..4b7e50e 100644
--- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/PitScoutingFragment.java
+++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/scouting/PitScoutingFragment.java
@@ -15,7 +15,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.astatin3.scoutingapp2025.SettingsVersionStack.latestSettings;
-import com.astatin3.scoutingapp2025.databinding.FragmentPitScoutingBinding;
+import com.astatin3.scoutingapp2025.databinding.FragmentScoutingPitBinding;
import com.astatin3.scoutingapp2025.scoutingData.ScoutingDataWriter;
import com.astatin3.scoutingapp2025.types.data.dataType;
import com.astatin3.scoutingapp2025.types.frcTeam;
@@ -29,7 +29,7 @@ import java.util.function.Function;
public class PitScoutingFragment extends Fragment {
- FragmentPitScoutingBinding binding;
+ FragmentScoutingPitBinding binding;
private static frcTeam team;
public static void setTeam(frcTeam tmpteam){
@@ -40,7 +40,7 @@ public class PitScoutingFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
- binding = FragmentPitScoutingBinding.inflate(inflater, container, false);
+ binding = FragmentScoutingPitBinding.inflate(inflater, container, false);
username = latestSettings.settings.get_username();
DataManager.reload_pit_fields();
diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TBAView.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TBAFragment.java
similarity index 97%
rename from app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TBAView.java
rename to app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TBAFragment.java
index cc0e6f1..9d1701b 100644
--- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TBAView.java
+++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TBAFragment.java
@@ -1,15 +1,11 @@
package com.astatin3.scoutingapp2025.ui.transfer;
-import android.app.AlertDialog;
-import android.content.Context;
import android.os.Bundle;
-import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import android.widget.ScrollView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
@@ -18,17 +14,14 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
-import com.astatin3.scoutingapp2025.databinding.FragmentDataCompileBinding;
import com.astatin3.scoutingapp2025.databinding.FragmentTransferTbaBinding;
import com.astatin3.scoutingapp2025.utility.AlertManager;
import com.astatin3.scoutingapp2025.utility.RequestTask;
import com.astatin3.scoutingapp2025.types.frcEvent;
import com.astatin3.scoutingapp2025.types.frcMatch;
import com.astatin3.scoutingapp2025.types.frcTeam;
-import com.astatin3.scoutingapp2025.databinding.FragmentTransferBinding;
import com.astatin3.scoutingapp2025.utility.fileEditor;
import com.astatin3.scoutingapp2025.utility.JSONUtil;
-import com.google.android.material.tabs.TabLayout;
import org.json.JSONArray;
import org.json.JSONException;
@@ -41,7 +34,7 @@ import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
-public class TBAView extends Fragment {
+public class TBAFragment extends Fragment {
private final String TBAAddress = "https://www.thebluealliance.com/api/v3/";
private final String TBAHeader = "X-TBA-Auth-Key: tjEKSZojAU2pgbs2mBt06SKyOakVhLutj3NwuxLTxPKQPLih11aCIwRIVFXKzY4e";
diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferFragment.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferFragment.java
index 1acbd7a..ad128bb 100644
--- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferFragment.java
+++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferFragment.java
@@ -4,33 +4,19 @@ import static androidx.navigation.fragment.FragmentKt.findNavController;
import android.app.AlertDialog;
import android.os.Bundle;
-import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.TableLayout;
-import android.widget.TableRow;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
-import androidx.navigation.Navigation;
import com.astatin3.scoutingapp2025.R;
import com.astatin3.scoutingapp2025.SettingsVersionStack.latestSettings;
import com.astatin3.scoutingapp2025.databinding.FragmentTransferBinding;
-import com.astatin3.scoutingapp2025.types.file;
import com.astatin3.scoutingapp2025.ui.transfer.bluetooth.BluetoothSenderFragment;
import com.astatin3.scoutingapp2025.ui.transfer.codes.CodeGeneratorView;
-import com.astatin3.scoutingapp2025.ui.transfer.codes.CodeOverlayView;
-import com.astatin3.scoutingapp2025.utility.ByteBuilder;
-import com.astatin3.scoutingapp2025.utility.fileEditor;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
public class TransferFragment extends Fragment {
private FragmentTransferBinding binding;
@@ -102,17 +88,17 @@ public class TransferFragment extends Fragment {
FileSelectorFragment.setOnSelect(data -> {
CodeGeneratorView.setData(data);
BluetoothSenderFragment.set_data(data);
- TransferSelector.setOnSelect(new TransferSelector.onSelect() {
+ TransferSelectorFragment.setOnSelect(new TransferSelectorFragment.onSelect() {
@Override
- public void onSelectCodes(TransferSelector self) {
+ public void onSelectCodes(TransferSelectorFragment self) {
findNavController(self).navigate(R.id.action_navigation_transfer_selector_to_navigation_code_generator);
}
@Override
- public void onSelectBluetooth(TransferSelector self) {
+ public void onSelectBluetooth(TransferSelectorFragment self) {
findNavController(self).navigate(R.id.action_navigation_transfer_selector_to_navigation_bluetooth_sender);
}
@Override
- public void onSelectWifi(TransferSelector self) {}
+ public void onSelectWifi(TransferSelectorFragment self) {}
});
findNavController(this).navigate(R.id.action_navigation_file_selector_to_navigation_transfer_selector);
});
@@ -123,19 +109,19 @@ public class TransferFragment extends Fragment {
private void start_download(){
- TransferSelector.setOnSelect(new TransferSelector.onSelect() {
+ TransferSelectorFragment.setOnSelect(new TransferSelectorFragment.onSelect() {
@Override
- public void onSelectCodes(TransferSelector self) {
+ public void onSelectCodes(TransferSelectorFragment self) {
findNavController(self).navigate(R.id.action_navigation_transfer_selector_to_navigation_code_scanner);
}
@Override
- public void onSelectBluetooth(TransferSelector self) {
+ public void onSelectBluetooth(TransferSelectorFragment self) {
findNavController(self).navigate(R.id.action_navigation_transfer_selector_to_navigation_bluetooth_receiver);
}
@Override
- public void onSelectWifi(TransferSelector self) {}
+ public void onSelectWifi(TransferSelectorFragment self) {}
});
findNavController(this).navigate(R.id.action_navigation_transfer_to_navigation_transfer_selector);
}
diff --git a/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferSelector.java b/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferSelectorFragment.java
similarity index 73%
rename from app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferSelector.java
rename to app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferSelectorFragment.java
index 18d5c01..ef69111 100644
--- a/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferSelector.java
+++ b/app/src/main/java/com/astatin3/scoutingapp2025/ui/transfer/TransferSelectorFragment.java
@@ -11,19 +11,19 @@ import androidx.fragment.app.Fragment;
import com.astatin3.scoutingapp2025.databinding.FragmentTransferSelectorBinding;
-public class TransferSelector extends Fragment {
+public class TransferSelectorFragment extends Fragment {
// Declaring three blank funcs in one line lol
- private static onSelect onselect = new onSelect() {@Override public void onSelectCodes(TransferSelector self) {}@Override public void onSelectBluetooth(TransferSelector self) {} @Override public void onSelectWifi(TransferSelector self) {}};
+ private static onSelect onselect = new onSelect() {@Override public void onSelectCodes(TransferSelectorFragment self) {}@Override public void onSelectBluetooth(TransferSelectorFragment self) {} @Override public void onSelectWifi(TransferSelectorFragment self) {}};
public static void setOnSelect(onSelect tmp) {
onselect = tmp;
}
public interface onSelect {
- void onSelectCodes(TransferSelector self);
- void onSelectBluetooth(TransferSelector self);
- void onSelectWifi(TransferSelector self);
+ void onSelectCodes(TransferSelectorFragment self);
+ void onSelectBluetooth(TransferSelectorFragment self);
+ void onSelectWifi(TransferSelectorFragment self);
}
FragmentTransferSelectorBinding binding;
diff --git a/app/src/main/res/anim/enter_anim.xml b/app/src/main/res/anim/enter_anim.xml
new file mode 100644
index 0000000..c6d9966
--- /dev/null
+++ b/app/src/main/res/anim/enter_anim.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/exit_anim.xml b/app/src/main/res/anim/exit_anim.xml
new file mode 100644
index 0000000..cb9fe07
--- /dev/null
+++ b/app/src/main/res/anim/exit_anim.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/pop_enter_anim.xml b/app/src/main/res/anim/pop_enter_anim.xml
new file mode 100644
index 0000000..79b997c
--- /dev/null
+++ b/app/src/main/res/anim/pop_enter_anim.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/anim/pop_exit_anim.xml b/app/src/main/res/anim/pop_exit_anim.xml
new file mode 100644
index 0000000..0b9e9cc
--- /dev/null
+++ b/app/src/main/res/anim/pop_exit_anim.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_match_scouting.xml b/app/src/main/res/layout/fragment_scouting_match.xml
similarity index 96%
rename from app/src/main/res/layout/fragment_match_scouting.xml
rename to app/src/main/res/layout/fragment_scouting_match.xml
index 65a8c02..fc45d10 100644
--- a/app/src/main/res/layout/fragment_match_scouting.xml
+++ b/app/src/main/res/layout/fragment_scouting_match.xml
@@ -9,8 +9,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@id/back_button">
+ app:layout_constraintEnd_toEndOf="parent">
diff --git a/app/src/main/res/layout/fragment_pit_scouting.xml b/app/src/main/res/layout/fragment_scouting_pit.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_pit_scouting.xml
rename to app/src/main/res/layout/fragment_scouting_pit.xml
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index 1aff6cc..b6b0c69 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -12,16 +12,24 @@
tools:layout="@layout/fragment_scouting">
+ app:destination="@id/navigation_match_scouting"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim"/>
+ app:destination="@id/navigation_team_selector"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ tools:layout="@layout/fragment_scouting_match">
+ app:destination="@id/navigation_pit_scouting"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_data_teams"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ tools:layout="@layout/fragment_scouting_pit"/>
@@ -53,16 +69,32 @@
tools:layout="@layout/fragment_data">
+ app:destination="@id/navigation_data_status"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_team_selector"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_data_compile"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_data_fields_chooser"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_data_fields"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_tba"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_file_selector"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_transfer_selector"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_transfer_selector"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_code_generator"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_bluetooth_sender"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_code_scanner"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
+ app:destination="@id/navigation_bluetooth_receiver"
+ app:enterAnim="@anim/enter_anim"
+ app:exitAnim="@anim/exit_anim"
+ app:popEnterAnim="@anim/enter_anim"
+ app:popExitAnim="@anim/pop_exit_anim" />
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 8aa1fd6..149495f 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,5 +1,5 @@
[versions]
-agp = "8.5.0"
+agp = "8.5.1"
junit = "4.13.2"
junitVersion = "1.1.5"
espressoCore = "3.5.1"