Skip to content

Commit 9f2c252

Browse files
committed
- Fix crash when result not found
1 parent 051404f commit 9f2c252

1 file changed

Lines changed: 17 additions & 11 deletions

File tree

app/src/main/java/com/android1500/gpssetter/MapsActivity.kt

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback, GoogleMap.OnMapCli
7474
private var xposedDialog: AlertDialog? = null
7575
private lateinit var alertDialog: MaterialAlertDialogBuilder
7676
private lateinit var dialog: AlertDialog
77-
77+
var listAddress: List<Address>? = null
7878

7979

8080
override fun onCreate(savedInstanceState: Bundle?) {
@@ -278,7 +278,7 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback, GoogleMap.OnMapCli
278278
moveMapToNewLocation(true)
279279
}
280280
is SearchProgress.Fail -> {
281-
showToast(value.error)
281+
showToast(value.error!!)
282282
progressBar.cancel()
283283
}
284284

@@ -444,7 +444,7 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback, GoogleMap.OnMapCli
444444
}
445445

446446

447-
private suspend fun getSearchAddress(address: String) = callbackFlow<SearchProgress> {
447+
private suspend fun getSearchAddress(address: String) = callbackFlow {
448448
withContext(Dispatchers.IO){
449449
trySend(SearchProgress.Progress)
450450

@@ -454,15 +454,21 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback, GoogleMap.OnMapCli
454454
}
455455

456456
try {
457-
val addresses = Geocoder(this@MapsActivity).getFromLocationName(address,5)
458-
if (address.isEmpty()){
459-
trySend(SearchProgress.Fail(""))
457+
val geocoder = Geocoder(this@MapsActivity)
458+
listAddress = geocoder.getFromLocationName(address,5)
459+
val list: List<Address>? = listAddress
460+
if (list == null) {
461+
trySend(SearchProgress.Fail(null))
460462
}
461-
addresses!![0]?.let {
462-
trySend(SearchProgress.Complete(it))
463+
if (list?.size == 1){
464+
trySend(SearchProgress.Complete(list[0]))
465+
} else {
466+
if (listAddress?.size != 0) {
467+
trySend(SearchProgress.Fail(null))
468+
}
469+
trySend(SearchProgress.Fail("Address not found"))
463470
}
464-
465-
}catch (io : IOException){
471+
} catch (io : IOException){
466472
trySend(SearchProgress.Fail("No internet"))
467473
}
468474
}
@@ -485,7 +491,7 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback, GoogleMap.OnMapCli
485491
sealed class SearchProgress {
486492
object Progress : SearchProgress()
487493
data class Complete(val address: Address) : SearchProgress()
488-
data class Fail(val error: String) : SearchProgress()
494+
data class Fail(val error: String?) : SearchProgress()
489495
data class RegexMatch(val lat: Double, val lon: Double) : SearchProgress()
490496

491497
}

0 commit comments

Comments
 (0)