diff --git a/app/src/main/java/com/rsschool/android2021/ErrorDialogFragment.kt b/app/src/main/java/com/rsschool/android2021/ErrorDialogFragment.kt new file mode 100644 index 0000000..49e3a73 --- /dev/null +++ b/app/src/main/java/com/rsschool/android2021/ErrorDialogFragment.kt @@ -0,0 +1,23 @@ +package com.rsschool.android2021 + +import android.app.Dialog +import android.os.Bundle +import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.DialogFragment + +class ErrorDialogFragment : DialogFragment() { + + public var text: String = "" + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + return activity?.let { + val builder = AlertDialog.Builder(it) + builder.setTitle("ERROR") + .setMessage(text) + .setPositiveButton("Ok") { + dialog, id -> dialog.cancel() + } + builder.create() + } ?: throw IllegalStateException("Activity cannot be null") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rsschool/android2021/FirstFragment.kt b/app/src/main/java/com/rsschool/android2021/FirstFragment.kt index 2449535..6342dff 100644 --- a/app/src/main/java/com/rsschool/android2021/FirstFragment.kt +++ b/app/src/main/java/com/rsschool/android2021/FirstFragment.kt @@ -5,6 +5,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import android.widget.EditText import android.widget.TextView import androidx.fragment.app.Fragment @@ -12,6 +13,8 @@ class FirstFragment : Fragment() { private var generateButton: Button? = null private var previousResult: TextView? = null + private lateinit var minEditText: EditText + private lateinit var maxEditText: EditText override fun onCreateView( inflater: LayoutInflater, @@ -25,18 +28,39 @@ class FirstFragment : Fragment() { super.onViewCreated(view, savedInstanceState) previousResult = view.findViewById(R.id.previous_result) generateButton = view.findViewById(R.id.generate) + minEditText = view.findViewById(R.id.min_value) + maxEditText = view.findViewById(R.id.max_value) val result = arguments?.getInt(PREVIOUS_RESULT_KEY) previousResult?.text = "Previous result: ${result.toString()}" - // TODO: val min = ... - // TODO: val max = ... - generateButton?.setOnClickListener { - // TODO: send min and max to the SecondFragment + val min = minEditText.text.toString() + val max = maxEditText.text.toString() + + try { + var minNumber = min.toInt() + var maxNumber = max.toInt() + + if (minNumber > maxNumber) { + showError("The minimum number cannot be more than the maximum!") + return@setOnClickListener + } + + (requireActivity() as? MainActivity)?.openSecondFragment(minNumber, maxNumber) + } catch (nfe: NumberFormatException) { + showError("Please enter whole numbers!") + } } } + private fun showError(str: String) { + val errorDialogFragment = ErrorDialogFragment() + errorDialogFragment.text = str + val manager = requireActivity().supportFragmentManager + errorDialogFragment.show(manager, "errorDialog") + } + companion object { @JvmStatic diff --git a/app/src/main/java/com/rsschool/android2021/MainActivity.java b/app/src/main/java/com/rsschool/android2021/MainActivity.java index ced8ec9..d403635 100644 --- a/app/src/main/java/com/rsschool/android2021/MainActivity.java +++ b/app/src/main/java/com/rsschool/android2021/MainActivity.java @@ -16,14 +16,15 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { openFirstFragment(0); } - private void openFirstFragment(int previousNumber) { + public void openFirstFragment(int previousNumber) { final Fragment firstFragment = FirstFragment.newInstance(previousNumber); final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - transaction.replace(R.id.container, firstFragment); - // TODO: invoke function which apply changes of the transaction + transaction.replace(R.id.container, firstFragment).commit(); } - private void openSecondFragment(int min, int max) { - // TODO: implement it + public void openSecondFragment(int min, int max) { + final Fragment secondFragment = SecondFragment.newInstance(min, max); + final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.container, secondFragment).commit(); } } diff --git a/app/src/main/java/com/rsschool/android2021/SecondFragment.kt b/app/src/main/java/com/rsschool/android2021/SecondFragment.kt index 536fdb1..24f44a8 100644 --- a/app/src/main/java/com/rsschool/android2021/SecondFragment.kt +++ b/app/src/main/java/com/rsschool/android2021/SecondFragment.kt @@ -29,16 +29,17 @@ class SecondFragment : Fragment() { val min = arguments?.getInt(MIN_VALUE_KEY) ?: 0 val max = arguments?.getInt(MAX_VALUE_KEY) ?: 0 - result?.text = generate(min, max).toString() + val random = generate(min, max) + result?.text = random.toString() backButton?.setOnClickListener { - // TODO: implement back + (requireActivity() as? MainActivity)?.openFirstFragment(random) } } private fun generate(min: Int, max: Int): Int { - // TODO: generate random number - return 0 + val random = (min..max).random() + return random } companion object { @@ -47,9 +48,9 @@ class SecondFragment : Fragment() { fun newInstance(min: Int, max: Int): SecondFragment { val fragment = SecondFragment() val args = Bundle() - - // TODO: implement adding arguments - + args.putInt(SecondFragment.MAX_VALUE_KEY, max) + args.putInt(SecondFragment.MIN_VALUE_KEY, min) + fragment.arguments = args return fragment }