Różnice pomiedzy androidem 5.0 a starszymi

0

Witam. Pisze aplikacje w której pobieram dane z serwera sql a później wysyłam je poprzez bundle do kilku fragmentów jaki arraylisty. Mam taki problem ze w androidzie 5.0 wszystko działa a gdy testuje aplikacje pod starszymi wersjami to mam błąd, że odwołuje sie do listy która jest pusta. Tylko dlaczego android 5.0 potrafi ja zapełnic danymi a starszy juz nie? Może ktoś ma jakieś pomysły? Z góry dziękuję

0
  1. Logi z Logcata
  2. Kawałki kodu który jest za to odpowiedzialny

Wróżyć nie potrafię ;).

0

Podejrzewam że problem jest w tej funkcji w której pobieram dane. A konkretnie w tym instrukcji if(typ=="3") ponieważ mam jeszcze kilka innych fragmentów do których pobieram dane w ten sposób ale tylko w tym jednym w środku funkcji mam ifa.

   public ArrayList<String> wybierzDlaCKomp(String id) throws SQLException {

        String SymEfektMod="";
        String EfektKsztal="";
        String SymbEfektKsztal="";
        String typ="";

        Connection con = connectionClass.CONN();
        String query="SELECT       IDtyp, Sylabus.IDsylabus, Nazwa_modulu.Nazwa, Wydzial.Nazwa_wydzialu, Kierunek_studiow.Kierunek, Efekt_ksztalcenia_modulu.Symbol, \n" +
                "              Efekt_ksztalcenia_modulu.Opis, Efekt_ksztalcenia_modulu.Symbol_efektu_modulu\n" +
                "\n" +
                "FROM            Sylabus INNER JOIN\n" +
                "                         Nazwa_modulu ON Sylabus.IDnazwa_modulu = Nazwa_modulu.IDnazwa_modulu INNER JOIN\n" +
                "\t\t\t\t\t\t Wydzial ON Sylabus.IDnazwa_jednostki_prowadzacej = Wydzial.IDwydzial INNER JOIN\n" +
                "                         Kierunek_studiow ON Sylabus.IDkierunek_studiow = Kierunek_studiow.IDkierunek_studiow INNER JOIN\n" +
                "                         Kod_modulu ON Sylabus.IDkod_modulu = Kod_modulu.IDkod_modulu INNER JOIN\n" +
                "                         Efekt_ksztalcenia_modulu ON Sylabus.IDsylabus = Efekt_ksztalcenia_modulu.IDsylabus \n" +
                "\t\t\t\t\t\t where Sylabus.IDSylabus= '"+id+"'";

        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(query);
        ArrayList<String> pojemnik= new ArrayList<String>();
        while (rs.next()) {
            typ= rs.getString("IDtyp");

            if(typ=="3") {

                SymEfektMod = rs.getString("Symbol");
                EfektKsztal = rs.getString("Opis");
                SymbEfektKsztal = rs.getString("Symbol_efektu_modulu");

                pojemnik.add(SymEfektMod);
                pojemnik.add(EfektKsztal);
                pojemnik.add(SymbEfektKsztal);
            }

        }



        return pojemnik;

    }
0

Jeśli chcesz sprawdzić czy dwa Stringi są identyczne to wywołujesz na zmiennej typu String metodę equals, a nie operator porównania - ten służy do czegoś innego.

1

to że działało Ci na 5.0 prawdopodobnie wynika z różnic pomiędzy ART-em a Dalvikiem. ART kombiluje tylko raz aplikację przypisał zmienną typ do jakiejść referencji i nie przeprowadza później optymalizacji Stringów.

To jest właśnie najgorsze przy porównywaniu String, Integer etc przez ==. Nie że da Ci zły wynik, tylko że raz Ci da dobry a raz zły i tak naprawdę Ciężko jest przewidzieć co i jak

1 użytkowników online, w tym zalogowanych: 0, gości: 1