From ac6967f5a9702cdeb17d513fc4db2a2fc7af2f69 Mon Sep 17 00:00:00 2001 From: dadada Date: Thu, 12 Nov 2020 21:13:50 +0100 Subject: [PATCH] Fix navigation --- .../li/dadada/uuidgen/ui/MainActivityTest.kt | 2 +- .../java/li/dadada/uuidgen/ui/MainActivity.kt | 11 ------- .../li/dadada/uuidgen/ui/UuidGenFragment.kt | 33 ++++++++++++++++--- .../li/dadada/uuidgen/ui/UuidListFragment.kt | 32 ++++++++++++++++-- .../ic_baseline_add_circle_outline_24.xml | 10 ++++++ app/src/main/res/menu/menu_create_uuid.xml | 10 ++++++ app/src/main/res/menu/menu_list.xml | 11 +++++++ app/src/main/res/menu/menu_main.xml | 7 +--- app/src/main/res/navigation/nav_graph.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ 10 files changed, 97 insertions(+), 25 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml create mode 100644 app/src/main/res/menu/menu_create_uuid.xml create mode 100644 app/src/main/res/menu/menu_list.xml diff --git a/app/src/androidTest/java/li/dadada/uuidgen/ui/MainActivityTest.kt b/app/src/androidTest/java/li/dadada/uuidgen/ui/MainActivityTest.kt index 632f6a9..1247cf6 100644 --- a/app/src/androidTest/java/li/dadada/uuidgen/ui/MainActivityTest.kt +++ b/app/src/androidTest/java/li/dadada/uuidgen/ui/MainActivityTest.kt @@ -31,7 +31,7 @@ class MainActivityTest { Navigation.setViewNavController(fragment.requireView(), navController) // Verify that performing a click changes the NavController’s state - onView(ViewMatchers.withId(R.id.action_history)).perform(click()) + onView(ViewMatchers.withId(R.id.action_to_history)).perform(click()) } assertEquals(navController.currentDestination?.id, R.id.uuid_list_fragment) } diff --git a/app/src/main/java/li/dadada/uuidgen/ui/MainActivity.kt b/app/src/main/java/li/dadada/uuidgen/ui/MainActivity.kt index dcdd416..f7e3cd5 100644 --- a/app/src/main/java/li/dadada/uuidgen/ui/MainActivity.kt +++ b/app/src/main/java/li/dadada/uuidgen/ui/MainActivity.kt @@ -23,15 +23,4 @@ class MainActivity : AppCompatActivity(), CoroutineScope by MainScope() { menuInflater.inflate(R.menu.menu_main, menu) return true } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - return when (item.itemId) { - R.id.action_history -> { - findNavController(R.id.nav_host_fragment) - .navigate(R.id.action_global_uuid_list_fragment) - true - } - else -> super.onOptionsItemSelected(item) - } - } } \ No newline at end of file diff --git a/app/src/main/java/li/dadada/uuidgen/ui/UuidGenFragment.kt b/app/src/main/java/li/dadada/uuidgen/ui/UuidGenFragment.kt index 948fae4..a39843b 100644 --- a/app/src/main/java/li/dadada/uuidgen/ui/UuidGenFragment.kt +++ b/app/src/main/java/li/dadada/uuidgen/ui/UuidGenFragment.kt @@ -3,12 +3,12 @@ package li.dadada.uuidgen.ui import android.content.ClipboardManager import android.content.Context import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup +import android.view.* +import androidx.appcompat.app.AppCompatActivity import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import androidx.navigation.fragment.findNavController import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope @@ -32,15 +32,40 @@ class UuidGenFragment : Fragment(), CoroutineScope by MainScope() { container: ViewGroup?, savedInstanceState: Bundle? ): View { + setHasOptionsMenu(true) + val binding: UuidGenFragmentBinding = DataBindingUtil.inflate(inflater, R.layout.uuid_gen_fragment, container, false) - clipboardManager = inflater.context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + clipboardManager = + inflater.context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager binding.buttonGen.setOnClickListener { view -> launch { genUuid(view) } } return binding.root } + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + inflater.inflate(R.menu.menu_create_uuid, menu) + } + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + if (activity is AppCompatActivity) { + (activity as AppCompatActivity).supportActionBar?.title = + getString(R.string.title_generate_uuid) + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return when (item.itemId) { + R.id.action_to_history -> { + findNavController().navigate(R.id.action_global_uuid_list_fragment) + true + } + else -> super.onOptionsItemSelected(item) + } + } + private suspend fun genUuid(view: View) { val uuid = viewModel.genUuid() if (uuid != null) { diff --git a/app/src/main/java/li/dadada/uuidgen/ui/UuidListFragment.kt b/app/src/main/java/li/dadada/uuidgen/ui/UuidListFragment.kt index c23e45d..0befb84 100644 --- a/app/src/main/java/li/dadada/uuidgen/ui/UuidListFragment.kt +++ b/app/src/main/java/li/dadada/uuidgen/ui/UuidListFragment.kt @@ -1,15 +1,16 @@ package li.dadada.uuidgen.ui import android.content.ClipboardManager +import android.content.Context import android.content.Context.CLIPBOARD_SERVICE import android.os.Bundle +import android.view.* +import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import li.dadada.uuidgen.R import li.dadada.uuidgen.model.Uuid @@ -40,6 +41,8 @@ class UuidListFragment : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { + setHasOptionsMenu(true) + binding = DataBindingUtil.inflate(inflater, R.layout.uuid_list_fragment, container, false) binding.listUuids.apply { adapter = uuidAdapter @@ -49,10 +52,33 @@ class UuidListFragment : Fragment() { return binding.root; } + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + inflater.inflate(R.menu.menu_list, menu) + } + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + if (activity is AppCompatActivity) { + (activity as AppCompatActivity).supportActionBar?.title = + getString(R.string.title_history) + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return when (item.itemId) { + R.id.action_to_creation -> { + findNavController().navigate(R.id.action_global_uuid_gen_fragment) + true + } + else -> super.onOptionsItemSelected(item) + } + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val viewModel = ViewModelProvider(this).get(UuidViewModel::class.java) viewModel.uuidList.observe(viewLifecycleOwner, Observer> { list -> uuidAdapter.submitList(list) }) } + } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml b/app/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml new file mode 100644 index 0000000..a1c721d --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/menu/menu_create_uuid.xml b/app/src/main/res/menu/menu_create_uuid.xml new file mode 100644 index 0000000..4523da1 --- /dev/null +++ b/app/src/main/res/menu/menu_create_uuid.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_list.xml b/app/src/main/res/menu/menu_list.xml new file mode 100644 index 0000000..47e4d22 --- /dev/null +++ b/app/src/main/res/menu/menu_list.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index e6674ea..29a4631 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -2,10 +2,5 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="li.dadada.uuidgen.ui.MainActivity"> - + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 8da626b..cdfcb67 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -18,4 +18,7 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f46f271..562c602 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,4 +5,7 @@ UUID List Fragment Duplicate UUID. Try again! Generate + History + Generate UUID + Go to create UUID \ No newline at end of file