• 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

Cloud VPS
+1 głos
960 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,840 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 676 wizyt
0 głosów
1 odpowiedź 573 wizyt
0 głosów
1 odpowiedź 1,479 wizyt

93,468 zapytań

142,404 odpowiedzi

322,706 komentarzy

62,850 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

Kursy INF.02 i INF.03
...