diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt index 8c62e337a..1e8986a81 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt @@ -50,7 +50,6 @@ class NumberPickerFactory @Inject constructor( @ActivityContext private val context: Context ) { - @SuppressLint("SetTextI18n") fun create( value: Double, @@ -60,6 +59,7 @@ class NumberPickerFactory frequency: Frequency, callback: ListHabitsBehavior.NumberPickerCallback ): AlertDialog { + numberPickerExists = true val inflater = LayoutInflater.from(context) val view = inflater.inflate(R.layout.number_picker_dialog, null) @@ -113,6 +113,7 @@ class NumberPickerFactory } .setOnDismissListener { callback.onNumberPickerDismissed() + numberPickerExists = false } if (frequency == DAILY) { @@ -169,6 +170,16 @@ class NumberPickerFactory val inputMethodManager = context.getSystemService(InputMethodManager::class.java) inputMethodManager?.showSoftInput(v, 0) } + + companion object { + private var numberPickerExists = false + + fun numberPickerAlreadyExists(): Boolean = numberPickerExists + + fun setNumberPickerExists(value: Boolean) { + numberPickerExists = value + } + } } class SeparatorWatcherInputFilter(private val nextPicker: NumberPicker) : InputFilter { diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt index 4ec28f9f3..d939edb47 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt @@ -234,7 +234,9 @@ class ListHabitsScreen frequency: Frequency, callback: ListHabitsBehavior.NumberPickerCallback ) { - numberPickerFactory.create(value, unit, notes, dateString, frequency, callback).show() + if (!NumberPickerFactory.numberPickerAlreadyExists()) { + numberPickerFactory.create(value, unit, notes, dateString, frequency, callback).show() + } } override fun showCheckmarkDialog( diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt index 4af6948ad..2fd92e241 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt @@ -20,6 +20,7 @@ package org.isoron.uhabits.activities.habits.show import android.content.ContentUris import android.os.Bundle +import android.util.Log import android.view.HapticFeedbackConstants import android.view.Menu import android.view.MenuItem @@ -173,7 +174,16 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener { frequency: Frequency, callback: ListHabitsBehavior.NumberPickerCallback ) { - NumberPickerFactory(this@ShowHabitActivity).create(value, unit, notes, dateString, frequency, callback).show() + if(!NumberPickerFactory.numberPickerAlreadyExists()) { + NumberPickerFactory(this@ShowHabitActivity).create( + value, + unit, + notes, + dateString, + frequency, + callback + ).show() + } } override fun showCheckmarkDialog(