2011-12-15 15 views
6

Mam osiem flipper, które mają 4 pytania i 4 odpowiedzi. Które wyświetlają te pytania i odpowiedzi za każdym razem, gdy kliknie się dany widok. Mój problem polega na tym, że kiedy pierwszy raz kliknięcie jakiegokolwiek kliknięcia jest kliknięte, w tym czasie nic się nie robi, a po kliknięciu na podglądzie kliknij następną klikniętą wartość podglądu, który chce sprawdzić, który jest taki sam (równy) lub nie. (Jeśli Pytanie to 5 + 3, to odpowiedzi powinny być 8).jak sprawdzić poprzednią wartość w systemie android z viewflipper

Stan:

  1. czy jestem pierwszy raz Q kliknięciu następnie następnym razem inny viewflipper które mają Q kliknięciu operacja check nic nie jest konieczne i nic ukryć.

  2. czy jestem pierwszy raz Q kliknięciu następnie następnym razem kliknięciu wartość sprowadzaniu z TextView Q i sprawdzić czy to prawda, czy nie, czy to jest prawda ukryj zarówno Q i A.

  3. jeśli Po raz pierwszy kliknięto przycisk A, a następnie następnym razem kliknięcie otrzyma wartość z widoku tekstowego A i sprawdź czy jest prawidłowa, czy nie, czy to jest poprawnie ukryć zarówno Q jak i A.

  4. jeśli pierwszy raz kliknęłam A następnie następnym razem, gdy inny widokflipper, który ma A jest kliknięty, nic nie wymaga operacji, nic się nie ukryje.

  5. Jeśli pierwszy raz kliknę Q, to następnym razem ten sam viewflipper, który ma kliknięto Q nic nie wymaga operacji sprawdzania nic nie ukrywa.

  6. jeśli pierwszy raz kliknąłem A, to następnym razem ten sam viewflipper, który ma kliknięcie A, nic nie wymaga operacji, nic się nie ukryje.

Więc Jak sprawdzić bieżący i poprzedni klikalny ViewFlipper kliknięciu ViewFlipper. Nie miałem pojęcia, jak sprawdzić problem.

Spójrz na to, myślę, że mój problem jest bardziej jasny.

enter image description here

Zmieniano: 16 gru

@Override 
public void onClick(View v) { 

    switch (v.getId()) { 
    case R.id.vf1: 
     try { 
      if (click) { 
       Message msg = new Message(); 
       msg.what = 1; 
       delayHandler.sendMessageDelayed(msg, DELAYTIME); 

       vFilpper1.showNext(); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     counter++; 
     break; 
    case R.id.vf2: 
     try { 
      Message msg = new Message(); 
      msg.what = 2; 
      delayHandler.sendMessageDelayed(msg, DELAYTIME); 
      Log.d("viewfilpper", "VFlipper 2"); 

      vFilpper2.showNext(); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     break; 
    case R.id.vf3: 
     try { 
      Message msg = new Message(); 
      msg.what = 3; 
      delayHandler.sendMessageDelayed(msg, DELAYTIME); 
      Log.d("viewfilpper", "VFlipper 3"); 
      vFilpper3.showNext(); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     break; 

    case R.id.vf4: 
     try { 
      Message msg = new Message(); 
      msg.what = 4; 
      delayHandler.sendMessageDelayed(msg, DELAYTIME); 
      Log.d("viewfilpper", "VFlipper 4"); 
      vFilpper4.showNext(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     break; 
    case R.id.vf5: 
     try { 
      Message msg = new Message(); 
      msg.what = 5; 
      delayHandler.sendMessageDelayed(msg, DELAYTIME); 
      Log.d("viewfilpper", "VFlipper 5"); 
      vFilpper5.showNext(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     break; 
    case R.id.vf7: 
     try { 
      Message msg = new Message(); 
      msg.what = 7; 
      delayHandler.sendMessageDelayed(msg, DELAYTIME); 
      Log.d("viewfilpper", "VFlipper 7"); 
      vFilpper7.showNext(); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     break; 
    case R.id.vf8: 
     try { 
      Message msg = new Message(); 
      msg.what = 8; 
      delayHandler.sendMessageDelayed(msg, DELAYTIME); 
      Log.d("viewfilpper", "VFlipper 8"); 
      vFilpper8.showNext(); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     break; 
+0

Podaj im identyfikatory, a następnie przechowuj Id ... Naprawdę bardzo proste. – Warpzit

+2

Podaję już im wszystkie viewflipper respecive id, teraz klikam viewflipper7, ale poprzedni klikalny viewflipper3 jest. więc jak uzyskać wartość viewflipper3 i jak kompilować do viewflipper7 vlaue, każdy viewflipper ma jeden widok tekstowy, w którym przechowywana jest wartość. –

+0

Zrób to w kodzie plz, więc kiedy przełączasz widok ustawiasz wartość na polu na ostatni widok = 1, to następnym razem, gdy zrobisz nowy widok, przeczytałeś go przed ponownym ustawieniem ... całkiem prosta odpowiedź: – Warpzit

Odpowiedz

3

Problem polega na tym, że w Twoim kodzie brakuje stanu wybranego PREVIOUS ViewFlipper. Mogę podać tylko częściowy kod, ponieważ nie znam reszty kodu.

w klasie, która ma swój fragment kodu tutaj, na „public void onClick (View v) {” metoda, chcesz mieć coś takiego:

public class Puzzle extends Activity{ //or whatever your class is called 

    private int previousFlipperID = -1; //this stores the previous state of the flipper that was selected 

    @Override 
    public void onClick(View v) { 
     //.... your code, but modified 
      // changes 
     if(previousFlipperID == -1){ 
      //this is the VERY FIRST CLICK, using -1 to denotate that nothing was previously selected 
      previousFlipperID = v.getId(); 
      return; 
     } 
      // end changes 

     switch (v.getId()) { 
     case R.id.vf1: 
     try { 
      if (click) { 

      // changes 
       switch(previousFlipperID){ 
       case 0: 
        //do your logic here that you stated. note that at this point in the code 
        // you are at the point where your PREVIOUS flipper was the first flipper 
        // and your CURRENT flipper is also the first one, since v.getId() is R.id.vf1 
        break; 
       case 1: //some logic, but the CURRENT flipper is the first flipper, while PREVIOUS flipper was the second flipper 
        ... 
       case 7: //the previous flipper selected was the last flipper 
        break; 
       } 
      // end changes 

       Message msg = new Message(); 
       msg.what = 1; 
       delayHandler.sendMessageDelayed(msg, DELAYTIME); 

       vFilpper1.showNext(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     counter++; 
     break; 

     // changes 
     previousFliperID = v.getId(); //update the previous flipper 
     // end changes 

    } 
} 

w moim kodu, szukać " // zmienia "szczególnie. zobaczysz, że użyłem liczby całkowitej do zapisania poprzedniego flippera. a następnie sposób, w jaki sprawdzam, czy jest to PIERWSZY czas, to sprawdzenie, czy poprzedni flipper wynosił -1, czy nie. na końcu upewnij się, że ustawiłeś bieżący identyfikator flippera jako poprzedni identyfikator flippera, aby następnym razem zaktualizować "poprzedni" identyfikator flippera.

Zwróć też uwagę, że miałem tam zagnieżdżoną instrukcję przełączania, ponieważ potrzebujesz kilku dodatkowych sprawdzeń, aby zrobić to, co się dzieje, w zależności od tego, jakie są obecne i poprzednie płetwy.

Odpowiedź jest najlepsza z moich umiejętności na informacjach, które mi powiedziano (a także na podstawie mojego najlepszego zrozumienia), więc mam nadzieję, że to pomoże.

P.S. Czuję się winna, że ​​tak, ale jeśli moja odpowiedź była prawidłowa, proszę, proszę, sprawdź moją odpowiedź, ponieważ ja naprawdę potrzebuję punktów bounty, aby zadać pytanie o nagrodę, ale nie sądzę, żebym miał wystarczająco punktów. dzięki! i wesołych świąt

0

Ok nie masz kodu, który pokazuje w jaki sposób przełączać się między widokami, ale tu idzie: Po przełączeniu na kod w swoim na kliknięcie lub cokolwiek ustawisz membervariable na last = currentselected i currentselected = identyfikator wybranego flipa widoku. Naprawdę martwy prosty. Oh i za pierwszym razem sprawdzisz, czy jest zerowa. Jeśli chcesz, abym był bardziej precyzyjnym kodem dostawy, który pokazuje, jak przełączasz się między swoimi widokami.

+0

Spójrz na moje pytanie, które jest edytowane. –

Powiązane problemy