mirror of
https://gitlab.com/dadada_/uuidgen.git
synced 2025-06-07 09:33:57 +02:00
Fix navigation
This commit is contained in:
parent
5efc5930da
commit
ac6967f5a9
10 changed files with 97 additions and 25 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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) {
|
||||
|
|
|
@ -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<Uuid>> { list -> uuidAdapter.submitList(list) })
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M13,7h-2v4L7,11v2h4v4h2v-4h4v-2h-4L13,7zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
|
||||
</vector>
|
10
app/src/main/res/menu/menu_create_uuid.xml
Normal file
10
app/src/main/res/menu/menu_create_uuid.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/action_to_history"
|
||||
android:icon="@drawable/ic_baseline_history_24"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/action_history"
|
||||
app:showAsAction="always" />
|
||||
</menu>
|
11
app/src/main/res/menu/menu_list.xml
Normal file
11
app/src/main/res/menu/menu_list.xml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_to_creation"
|
||||
android:icon="@drawable/ic_baseline_add_circle_outline_24"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/action_to_create_uuid"
|
||||
app:showAsAction="always" />
|
||||
</menu>
|
|
@ -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">
|
||||
<item
|
||||
android:id="@+id/action_history"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/action_history"
|
||||
android:icon="@drawable/ic_baseline_history_24"
|
||||
app:showAsAction="always" />
|
||||
|
||||
</menu>
|
|
@ -18,4 +18,7 @@
|
|||
<action android:id="@+id/action_global_uuid_list_fragment"
|
||||
app:destination="@id/uuid_list_fragment"/>
|
||||
|
||||
<action android:id="@+id/action_global_uuid_gen_fragment"
|
||||
app:destination="@id/uuid_gen_fragment"/>
|
||||
|
||||
</navigation>
|
|
@ -5,4 +5,7 @@
|
|||
<string name="first_fragment_label">UUID List Fragment</string>
|
||||
<string name="warn_duplicate_uuid">Duplicate UUID. Try again!</string>
|
||||
<string name="action_generate">Generate</string>
|
||||
<string name="title_history">History</string>
|
||||
<string name="title_generate_uuid">Generate UUID</string>
|
||||
<string name="action_to_create_uuid">Go to create UUID</string>
|
||||
</resources>
|
Loading…
Add table
Add a link
Reference in a new issue