Прежде всего, я новичок в программировании, я читаю другие посты, но ни одна из них не решила мою проблему.
У меня есть приложение с местными жителями на трех языках: румынском, английском, испанском. В приложении есть 2 действия: Mainс данными, заполняющими другой результат вычисления.
Когда я тестирую приложение в других локалях, кроме английского, вылетает.
Проблема в том, что в английском приложение работает очень хорошо, в других локалях при отладке я получаюНеустранимое исключение:
package com.example.sportbetodds
import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.os.Build
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.annotation.RequiresApi
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var ntm = etntm.text
var gda= etntGDA.text
var gdd = etntGDD.text
var ntmM = etntmM.text
var gdaMG = etMGDA.text
var gdaMO = edMGDD.text
var gpaMG = edMGPA.text
var gpaMO =etMGPD.text
try {
btCalT.setOnClickListener {
/** Statistici din liga **/
val intent = Intent(this@MainActivity, Rezultate::class.java)
//acasa date
var ntmA = ntm.toString().toBigDecimal().toDouble()
var gdaA = gda.toString().toBigDecimal().toDouble()
var goluriDA = (gdaA/ntmA).toString().toDouble()
//Debug Exception.kt:45----> val dgoluriDA:Double = String.format("%.3f", goluriDA).toDouble()
var goluriDAa = dgoluriDA.toString()
intent.putExtra("tvRgda",goluriDAa)
//deplasare date
var gdda = gdd.toString().toBigDecimal().toDouble()
var goluridd = (gdda/ntmA).toString().toDouble()
val dgoluridd:Double = String.format("%.3f", goluridd).toDouble()
var goluridda = dgoluridd.toString()
intent.putExtra("tvgdd",goluridda)
/** Calcularea medie goluri selectie **/
//inscrise acasa gazde
var ntmMA = ntmM.toString().toBigDecimal().toDouble()
var gdaMgA = gdaMG.toString().toBigDecimal().toDouble()
var gdaMgaA: Double = (gdaMgA/ntmMA).toString().toDouble()
var goluriMG = gdaMgaA.toString()
// inscrise deplasare oaspeti
var gdMO = gdaMO.toString().toBigDecimal().toDouble()
var gdMOd = (gdMO/ntmMA).toString().toDouble()
// var gdMOda = gdMOd.toString()
//primite acasa gazda
var gpMGa = gpaMG.toString().toBigDecimal().toDouble()
var gpMGaA = (gpMGa/ntmMA).toString().toDouble()
// var gpMGaAa = gpMGaA.toString()
//primite acasa oaspete
var gpMOa = gpaMO.toString().toBigDecimal().toDouble()
var gpMOaa = (gpMOa/ntmMA).toString().toDouble()
// var gpMOA = gpMOaa.toString()
/** Calculare forta de atac **/
//forta atac gazda
var fortaAG = gdaMgaA/goluriDA
var fortaAO = gdMOd/goluridd
var fortaDG = gpMGaA/goluridd
var fortaDO = gpMOaa/goluriDA
/** Calculare numarului de goluri estimat sa fie inscris **/
// cate goluri ar trebuii sa inscrie gazda
var predGazda = fortaAG*fortaDO*goluriDA
val dpredGazda:Double = String.format("%.3f", predGazda).toDouble()
var gazdaGol = dpredGazda.toString()
intent.putExtra("gazdeG", gazdaGol)
var predOaspeti = fortaAO*fortaDG*goluridd
val dpredOaspeti:Double = String.format("%.3f", predOaspeti).toDouble()
var oaspetiGol= dpredOaspeti.toString()
intent.putExtra("oaspetiG", oaspetiGol)
startActivity(intent)
}
}catch (ex: Exception){
println("Exception $ex")
}
}
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
fun fixUpLocale(ctx: Context, newLocale: Locale) {
val res = ctx.resources
val config = res.configuration
val curLocale = getLocale(config)
if (curLocale != newLocale) {
Locale.setDefault(newLocale)
val conf = Configuration(config)
conf.setLocale(newLocale)
res.updateConfiguration(conf, res.displayMetrics);
}
}
fun getLocale(config: Configuration): Locale {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return config.locales[0]
} else {
//noinspection deprecation
return config.locale;
}
Когда я отлаживаю на английском языке, все работает нормально, никакой ошибки не появляется.Главное задание переводится хорошо, в намерении для второго действия приложение разбивается. Пожалуйста, помогите, я не могу найти решение по этому вопросу
E/AndroidRuntime: [ERB] Update app failure countmain
[ERB] Update app failure - ActivityThread.currentProcessName : com.example.sportbetodds
[ERB] Update app failure - Process.myPid : 10552
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.sportbetodds, PID: 10552
java.lang.NumberFormatException: Invalid double: "1,145"
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.initialParse(StringToReal.java:164)
at java.lang.StringToReal.parseDouble(StringToReal.java:282)
at java.lang.Double.parseDouble(Double.java:301)
at com.example.sportbetodds.MainActivity$onCreate$1.onClick(MainActivity.kt:45)
at android.view.View.performClick(View.java:5205)
at android.view.View$PerformClick.run(View.java:21164)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
, поскольку в Исключении говорится, что я пытаюсь проверить, в чем проблема свход указан в исключении, но все выглядит хорошо