From b455dbe095e86225aa6cbeea79872d0fc44d369d Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Sat, 12 Mar 2022 13:52:30 +0200 Subject: [PATCH] Create empty splash fragment to solve start destination --- .../java/com/futo/circles/MainActivity.kt | 29 +------------------ .../circles/feature/splash/SplashFragment.kt | 20 +++++++++++++ app/src/main/res/layout/main_activity.xml | 17 ++++------- app/src/main/res/layout/splash_fragment.xml | 6 ++++ .../res/navigation/nav_graph_start_host.xml | 20 ++++++++++++- 5 files changed, 51 insertions(+), 41 deletions(-) create mode 100644 app/src/main/java/com/futo/circles/feature/splash/SplashFragment.kt create mode 100644 app/src/main/res/layout/splash_fragment.xml diff --git a/app/src/main/java/com/futo/circles/MainActivity.kt b/app/src/main/java/com/futo/circles/MainActivity.kt index fa17ebb0c..386877454 100644 --- a/app/src/main/java/com/futo/circles/MainActivity.kt +++ b/app/src/main/java/com/futo/circles/MainActivity.kt @@ -1,33 +1,6 @@ package com.futo.circles -import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import androidx.navigation.NavController -import androidx.navigation.NavGraph -import androidx.navigation.fragment.NavHostFragment -import com.futo.circles.provider.MatrixSessionProvider -class MainActivity : AppCompatActivity(R.layout.main_activity) { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setInitialFragment() - } - - private fun setInitialFragment() { - val navController: NavController = - (supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment).navController - val navGraph = navController.navInflater.inflate(R.navigation.nav_graph_start_host) - setStartDestination(navGraph) - navController.setGraph(navGraph, intent.extras) - } - - private fun setStartDestination(navGraph: NavGraph) { - val startDestinationId = MatrixSessionProvider.currentSession?.let { - R.id.bottomNavigationFragment - } ?: R.id.logInFragment - - navGraph.setStartDestination(startDestinationId) - } -} \ No newline at end of file +class MainActivity : AppCompatActivity(R.layout.main_activity) \ No newline at end of file diff --git a/app/src/main/java/com/futo/circles/feature/splash/SplashFragment.kt b/app/src/main/java/com/futo/circles/feature/splash/SplashFragment.kt new file mode 100644 index 000000000..cc0fa729f --- /dev/null +++ b/app/src/main/java/com/futo/circles/feature/splash/SplashFragment.kt @@ -0,0 +1,20 @@ +package com.futo.circles.feature.splash + +import android.os.Bundle +import android.view.View +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController +import com.futo.circles.R +import com.futo.circles.provider.MatrixSessionProvider + +class SplashFragment : Fragment(R.layout.splash_fragment) { + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val destination = MatrixSessionProvider.currentSession?.let { + SplashFragmentDirections.toBottomNavigationFragment() + } ?: SplashFragmentDirections.toLogInFragment() + + findNavController().navigate(destination) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index 25c44e5f4..778060440 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -1,17 +1,10 @@ <?xml version="1.0" encoding="utf-8"?> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.fragment.app.FragmentContainerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/container" + android:id="@+id/nav_host_fragment" + android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".MainActivity"> + app:defaultNavHost="true" + app:navGraph="@navigation/nav_graph_start_host" /> - <androidx.fragment.app.FragmentContainerView - android:id="@+id/nav_host_fragment" - android:name="androidx.navigation.fragment.NavHostFragment" - android:layout_width="match_parent" - android:layout_height="match_parent" - app:defaultNavHost="true" /> - -</FrameLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/splash_fragment.xml b/app/src/main/res/layout/splash_fragment.xml new file mode 100644 index 000000000..77d9ef65f --- /dev/null +++ b/app/src/main/res/layout/splash_fragment.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph_start_host.xml b/app/src/main/res/navigation/nav_graph_start_host.xml index 484d803d5..a9bbfa4f9 100644 --- a/app/src/main/res/navigation/nav_graph_start_host.xml +++ b/app/src/main/res/navigation/nav_graph_start_host.xml @@ -3,7 +3,25 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_graph_start_host" - app:startDestination="@id/logInFragment"> + app:startDestination="@id/splashFragment"> + + <fragment + android:id="@+id/splashFragment" + android:name="com.futo.circles.feature.splash.SplashFragment" + android:label="Splash" + tools:layout="@layout/splash_fragment"> + + <action + android:id="@+id/to_logInFragment" + app:destination="@id/logInFragment" + app:popUpTo="@id/splashFragment" + app:popUpToInclusive="true" /> + <action + android:id="@+id/to_bottomNavigationFragment" + app:destination="@id/bottomNavigationFragment" + app:popUpTo="@id/splashFragment" + app:popUpToInclusive="true" /> + </fragment> <fragment android:id="@+id/logInFragment" -- GitLab