Referencja 3 tablic? dziwna sytuacja

Odpowiedz Nowy wątek
2015-11-29 03:18
Autor
0

Cześć, możliwe jest, że mając 3 tablice ImageView (android) nadpisując jedną z nich, nadpisują się 2 drugie tablice?

Mam coś takiego;
załóżmy że mamy dwie tablice punktów. np

Gracz1[0][0]=obr. drzewa; Gracz2[0][0]=obraz jajka

;

I teraz mam coś takiego, że wywołuje metodę niżej czyli updateGracz(Gracz2) z arg drugiej tablicy.. i od razu próbuje odczytać punkt [0][0] z tablicy Gracz1 to dostaje to nagle tam znajduje się jakimś cudem obr wody? mimo, że posłalem tablicę Gracz2 a nie 1? Jest to możliwe czy już mi całkowicie coś szwankuje?

     public void  updateGracz(ImageView gracz[][]) {
        for (int i = 0; i < gracz.length; i++) {
            for (int j = 0; j < gracz.length; j++) {
                gracz[i][j].setImageResource(R.drawable.blog_dp_5058985_7848593_tr_woda);
                gracz[i][j].setTag(R.drawable.blog_dp_5058985_7848593_tr_woda);
            }
        }

    }
edytowany 2x, ostatnio: bogdans, 2016-12-13 18:26

Pozostało 580 znaków

2015-11-29 03:47
0

Być może masz tylko jedną tablicę (jeden byt) zapisaną pod trzema nazwami (bo chciałeś skopiować, a po prostu trzy razy przypisałeś referencję do tej samej tablicy) ?

Pozostało 580 znaków

2015-11-29 10:19
Autor
0

No właśnie zdaje mi się, że normalnie 3 obiekty mam

ImageView Gracz1[][]=new ImageView[5][5]; itd To się dzieje tylko kiedy wywołana jest ta funkcja

Pozostało 580 znaków

2015-11-29 12:21
Autor
0

Sorry za dubla, ale zdaje się, że problem jest tutaj.. kod ma ściągnąć wszystkie przyciski do tablic. Potem tylko do jednej z nich dodaje obrazek a jakims trafem od razu kolejne tablice ten obrazek już mają..

        tl = (TableLayout) findViewById(R.id.tableLayout);
        for (int i = 0; i < tl.getChildCount(); i++) {
            View v = tl.getChildAt(i);
            if (v instanceof TableRow) {

                for (int j = 0; j < ((TableRow) v).getChildCount(); j++) {
                    View innerView = ((TableRow) v).getChildAt(j);
                    if (innerView instanceof ImageView) {
                        Gracz1[i][j] = (ImageView) innerView;
                        Gracz2[i][j] = (ImageView) innerView;
                        mapa[i][j] = (ImageView) innerView;

                    }
                }
            }
        } 

Pozostało 580 znaków

2015-12-02 17:42
0

Nie wiem za bardzo o co chodzi, ale

                    if (innerView instanceof ImageView) {
                        Gracz1[i][j] = (ImageView) innerView;
                        Gracz2[i][j] = (ImageView) innerView;
                        mapa[i][j] = (ImageView) innerView;
                    }

sugeruje, że kopiujesz do wszystkich tablic jakiś ImageView...

Poza tym wydawało mi się, że widziałem w tym wątku post, w którym ktoś Ci napisał, że źle iterujesz po tablicy, bo powinieneś mieć for (int j = 0; j < gracz.length[0]; j++), ale jakoś go nie widzę...

A widzisz takie czerwone -3 w nawiasie? Autor trzech postów usunął je z nieznanych powodów. - bogdans 2015-12-02 19:11
Nie widzę nic czerwonego. Gdzie mam patrzeć? - notexists 2015-12-02 19:22
Spójrz niżej. - bogdans 2015-12-02 19:31

Pozostało 580 znaków

2015-12-02 19:30
0

red.png
Może trzeba być moderatorem, jak się wyloguje i jestem gościem, to też nie widzę.

  • red.png (0 MB) - ściągnięć: 35

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
Ja widzę tylko: 5 odpowiedzi, 141 wyświetleń - notexists 2015-12-02 19:43

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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