eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAndroid › Re: Android
  • Data: 2011-02-09 22:15:25
    Temat: Re: Android
    Od: Adam Dybkowski <a...@4...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2011-02-09 19:59 Lelek@ napisał(a):

    >> Skoro ta dyskusja trwa dalej, to zanim się wytoczy takie armaty, można
    >> byłoby poprosić autora wątku o kompilowalny kawałek kodu który ma
    >> sprawiać takie problemy? Z opisu, z pierwszej wiadomości, można
    >
    > public void dupa() {
    [...]
    > Jeżeli w polu EditText nic nie wpiszę, będzie puste to próba odczytania
    > buf[0] skończy się wywałką.

    Hmmm, coś chyba ściemniasz. Skopiowałem twój przykładowy kod i odpaliłem
    w emulatorze 2.2. Na głównej aktywności mam kontrolkę edycyjną o nazwie
    "editText1". Tak wygląda cała metoda (podpiąłem jej wywołanie pod
    naciśnięcie dodatkowego przycisku):

    public void test() {
    EditText editText = (EditText) findViewById(R.id.editText1);
    String fromEditText = editText.getText().toString();

    byte buf[] = new byte[256];
    int bfx[] = new int[256];
    int i, len;

    try {
    buf = fromEditText.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return;
    }

    len = buf.length;

    for (i = 0; i < len; i++) {
    bfx[i] = ((int)buf[i] & 0xFF);
    Log.d("TEST", "BYTE: " + bfx[i]);
    }
    }

    Znajduje się tu wszystko, co przytoczyłeś plus dodatkowy kod na początku
    do odczytania ciągu znaków z kontrolki edycyjnej. Początkowe
    zaalokowanie bufora buf nie ma znaczenia bo metoda getBytes() i tak
    zwraca tablicę bajtów i zmienna buf zostanie nadpisana. Prościej jest
    nie deklarować tej zmiennej na początku tylko dopiero gdy jest
    potrzebna, np:
    byte buf[] = fromEditText.getBytes("UTF-8");

    W każdym razie uruchomienie daje spodziewane rezultaty. Gdy kontrolka
    jest pusta to nic się nie wywala, metoda getBytes() zwraca pustą tablicę
    a nie null, w zmiennej len mamy wartość 0 i nic się nie wypisuje.

    Natomiast gdy do kontrolki edycyjnej wpiszę jakiś tekst to także
    powyższy kod działa zgodnie z oczekiwaniami. Na debugu (to ten magiczny
    LogCat, w Eclipse możesz go pokazać wybierając z menu: Window/Show
    view/Other/Android/LogCat albo prościej naciskając Ctrl+3 i wpisując
    "logcat") jest to pokazywane:

    02-09 22:04:03.585: DEBUG/TEST(336): BYTE: 97
    02-09 22:04:03.585: DEBUG/TEST(336): BYTE: 100
    02-09 22:04:03.585: DEBUG/TEST(336): BYTE: 97
    02-09 22:04:03.585: DEBUG/TEST(336): BYTE: 109

    Chyba nie unikniesz pokazania większego kawałka kodu aby ustalić co się
    wywala właściwie. Możesz spakować cały projekt i wrzucić gdzieś na sieć?

    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: