• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Projekt z android studio nie działa a innych telefonie

Object Storage Arubacloud
+1 głos
748 wizyt
pytanie zadane 6 grudnia 2018 w Java przez kvbq Obywatel (1,490 p.)

Stworzyłem aplikacje, która bez zarzutu działa na moim telefonie. Cały folder z aplikacją dodałem na dysk, mój kolega pobrał, rozpakował i otworzył u siebie na android studio. Na początku wszystko działało, ale po dodaniu DecimalFormat po stronie kolegi aplikacja przestała działać natomiast po mojej nadal działa. Ja mam androida 7.0 kolega 8.0 Log z błędami

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.pc.quadraticfunction, PID: 16245
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389)
        at android.view.View.performClick(View.java:6897)
        at android.widget.TextView.performClick(TextView.java:12693)
        at android.view.View$PerformClick.run(View.java:26101)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
        at android.view.View.performClick(View.java:6897) 
        at android.widget.TextView.performClick(TextView.java:12693) 
        at android.view.View$PerformClick.run(View.java:26101) 
        at android.os.Handler.handleCallback(Handler.java:789) 
        at android.os.Handler.dispatchMessage(Handler.java:98) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6944) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 
     Caused by: java.lang.NumberFormatException: For input string: "4,00000"
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
        at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
        at java.lang.Float.parseFloat(Float.java:452)
        at com.example.pc.quadraticfunction.MainActivity.calculate(MainActivity.java:103)

Myślę, że najważniejsza linijka to Caused by: java.lang.NumberFormatException: For input string: "4,00000"

Czy to możliwe, że DecimalFormat nie działa na androidzie 8 czy to może coś innego?

Kod do DecimalFormat

DecimalFormat decimalFormat = new DecimalFormat("#.00000");
result1=Float.parseFloat(decimalFormat.format(bInt*bInt));

Oczywiście result1 oraz bInt są zadeklarowane tylko wyżej oraz więcej liczb uzywa DecimalFormat, ale że robią to na podobnej zasadzie to umieszczam tylko jeden przykład.

1 odpowiedź

+1 głos
odpowiedź 6 grudnia 2018 przez sefir Dyskutant (8,560 p.)
wybrane 11 grudnia 2018 przez kvbq
 
Najlepsza
A nie chodzi tu czasem o to, że nie chce się sparsować przez znak "," w stringu, zobacz czy jak zamienisz ten znak na "." to dalej wywala?
1
komentarz 7 grudnia 2018 przez KubenQPL Maniak (62,820 p.)
Tak, to będzie to. Można też po prostu zmienić w EditText inputType na numberDecimal
komentarz 10 grudnia 2018 przez kvbq Obywatel (1,490 p.)
edycja 10 grudnia 2018 przez kvbq

Zmieniłem trochę i teraz ta część wygląda tak

 try {

            String aString = String.valueOf(a.getText());
            String bString = String.valueOf(b.getText());
            String cString = String.valueOf(c.getText());

            aInt = Double.parseDouble(aString.replace(",","."));
            bInt = Double.parseDouble(bString.replace(",","."));
            cInt = Double.parseDouble(cString.replace(",","."));

        }
        catch (Exception e)
        {
            calculatingWithP();
            //Toast.makeText(this, "Zły format liczby", Toast.LENGTH_SHORT).show();
            return;
        }

Tu sam początek funkcji calculatingWithP

double x1,x2;
        EditText x1Edit = findViewById(R.id.enterX1EditText);
        EditText x2Edit = findViewById(R.id.enterX2EditText);
        com.jcminarro.roundkornerlayout.RoundKornerLinearLayout roundLayout = findViewById(R.id.q);
        roundLayout.setVisibility(View.GONE);
        roundLayout = findViewById(R.id.break3);
        roundLayout.setVisibility(View.GONE);
        roundLayout = findViewById(R.id.delta);
        roundLayout.setVisibility(View.GONE);
        roundLayout = findViewById(R.id.break1);
        roundLayout.setVisibility(View.GONE);
        roundLayout = findViewById(R.id.x0);
        roundLayout.setVisibility(View.GONE);
        roundLayout = findViewById(R.id.break4);
        roundLayout.setVisibility(View.GONE);
        roundLayout = findViewById(R.id.x1);
        roundLayout.setVisibility(View.GONE);
        roundLayout = findViewById(R.id.break5);
        roundLayout.setVisibility(View.GONE);
        roundLayout = findViewById(R.id.x2);
        roundLayout.setVisibility(View.GONE);
        roundLayout = findViewById(R.id.break6);
        roundLayout.setVisibility(View.GONE);

    try {

        String aString = String.valueOf(x1Edit.getText());
        String bString = String.valueOf(x2Edit.getText());


        x1 = Double.parseDouble(aString.replace(",","."));
        x2 = Double.parseDouble(bString.replace(",","."));

    }
    catch (Exception e)
    {
        Toast.makeText(this, "Not a number", Toast.LENGTH_SHORT).show();
        return;
    }

A wszystkie pola są opisane linijką

android:inputType="numberDecimal|numberSigned|textPersonName"

 

textPersonName jest bo bez tego klawiatura ( przynajmniej w moim telefonie ) nie pozwala na niektóre liczby

Kolega odpalił i nadal nie działa

 

EDIT 

Włączyłem na jeszcze innym telefonie i mam taki błąd

2018-12-10 16:06:10.880 1243-2164/? E/Process: isHighLoadProcess: get cpu failed
2018-12-10 16:06:10.917 1670-1670/? I/EventCenter: EventCenter Get :com.huawei.android.action.WEATHER_CHANGE
2018-12-10 16:06:10.949 1670-1670/? I/EventCenter: EventCenter Get :com.huawei.android.action.WEATHER_CHANGE
2018-12-10 16:06:10.962 25807-25807/? E/FullInputEventModel: onStartInput event aborted: eex: could not obtain extracted text (class eex)
2018-12-10 16:06:10.964 1243-15620/? E/Process: isHighLoadProcess: get cpu failed
2018-12-10 16:06:10.967 523-572/? W/JankService: virtual bool android::JankManualDumpLogAnalyser::processEntry(android::LogEntry *, int, bool), not beta version or commercial log off
2018-12-10 16:06:10.973 1243-1375/? I/EventHub: EventHub monitor: no key events in the past 390s, 
2018-12-10 16:06:11.080 1243-14299/? E/Process: isHighLoadProcess: get cpu failed
2018-12-10 16:06:11.087 1243-2053/? E/Process: isHighLoadProcess: get cpu failed
2018-12-10 16:06:11.095 1243-29925/? E/Process: isHighLoadProcess: get cpu failed
2018-12-10 16:06:11.105 1243-29738/? E/Process: isHighLoadProcess: get cpu failed
2018-12-10 16:06:11.114 1243-1528/? E/Process: isHighLoadProcess: get cpu failed
2018-12-10 16:06:11.123 1243-4186/? E/Process: isHighLoadProcess: get cpu failed
2018-12-10 16:06:11.131 1243-2053/? E/Process: isHighLoadProcess: get cpu failed
2018-12-10 16:06:11.256 480-480/? E/ServiceManager: try to find service failed, not allowed access from isolated processes.
2018-12-10 16:06:11.256 21238-21251/? I/ServiceManager: Waiting for service SurfaceFlinger...
2018-12-10 16:06:11.336 1841-2050/? E/HwSystemManager: SimCardMethod:/getSimCardInfo: imsi is null
2018-12-10 16:06:11.343 1841-2050/? E/HwSystemManager: NormalTrafficAnalysis:alert byte = 0, so return
2018-12-10 16:06:11.362 1841-2050/? E/HwSystemManager: LeisureTrafficSetting:result is empty
1
komentarz 10 grudnia 2018 przez sefir Dyskutant (8,560 p.)
A tym razem co wywala u kolegi?

Ten log co podałeś to wywala z innych aplikacji, android ciągle ma jakieś errory :P
komentarz 11 grudnia 2018 przez kvbq Obywatel (1,490 p.)

Problem rozwiązany. Chodziło o to, że ja miałem system telefonu ustawiony na amerykański ( nauka języka plus dostęp do asystenta ) a kolega na polski. Na amerykańskim odstępem w liczbie jest kropka a w polskim-przecinek. To sprawiało, że dobrze już ustawiona liczba zostawała zmieniona do takiej gdzie zamiast kropki jest przecinek, który nie jest obsługiwany przez typy liczbowe i próba jego parsowania do tego typu kończyła się błędem. Rozwiązanie tego problemu to zmiana lokalizacji DecimalFormat.

DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(Locale.US);
DecimalFormat decimalFormat = new DecimalFormat("#.00000",decimalFormatSymbols);

Podobne pytania

0 głosów
2 odpowiedzi 484 wizyt
0 głosów
1 odpowiedź 458 wizyt
0 głosów
1 odpowiedź 1,181 wizyt

92,566 zapytań

141,420 odpowiedzi

319,609 komentarzy

61,952 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...