2011-12-15 10 views
6

मेरे पास आठ व्यू फ़्लिपर हैं जिनमें 4 प्रश्न और 4 उत्तर हैं। जो प्रश्न और उत्तर प्रदर्शित करते हैं, जब भी वह विशेष व्यूफ्लिपर क्लिक किया जाता है। मेरी समस्या यह है कि, पहली बार जब कोई व्यूफ्लिपर क्लिक किया जाता है, उस समय कुछ भी करने के लिए नहीं, और व्यूफ्लिपर पर क्लिक करने के बाद अगला क्लिक किए गए व्यूफ्लिपर मान को देखना चाहिए कि कौन सा समान (बराबर) है या नहीं। (यदि प्रश्न 5 + 3 है तो जवाब 8 होना चाहिए)।व्यूफ्लिपर के एंड्रॉइड में पिछले मान को कैसे जांचें

शर्त:

  1. अगर मैं पहली बार क्यू तो अगली बार एक और viewflipper जो क्यू क्लिक किया जाता है कुछ भी नहीं है की जांच आपरेशन आवश्यक और कुछ भी नहीं छिपाना है क्लिक किया जाता है कर रहा हूँ।

  2. अगर मैं पहली बार कर रहा हूँ क्यू तो क्लिक किया जाता है अगली बार जब एक क्यू की TextView से पुनर्प्राप्त मूल्य क्लिक किया और जाँच यह सही है या नहीं है, अगर यह सही छिपाने दोनों क्यू और ए

  3. यदि है मैं कर रहा हूँ पहली बार एक तो क्लिक किया अगले timeQ एक की TextView से पुनर्प्राप्त मूल्य क्लिक किया और जाँच यह सही है या नहीं है, अगर यह सही छिपाने दोनों क्यू और ए

  4. है अगर मैं पहली बार एक क्लिक किया जाता है कर रहा हूँ है फिर अगली बार एक और व्यूफ्लिपर जो एए है क्लिक किया गया है चेक ऑपरेशन आवश्यक कुछ भी छुपा नहीं है।

  5. यदि मैं पहली बार क्यू क्लिक करता हूं तो अगली बार एक ही व्यूफ्लिपर जिसे क्यू पर क्लिक किया गया है, कुछ भी क्लिक नहीं किया गया है, ऑपरेशन आवश्यक कुछ भी छिपाना आवश्यक नहीं है।

  6. अगर मैं पहली बार ए क्लिक करता हूं तो अगली बार उसी व्यूफ्लिपर पर क्लिक किया जाता है जिसमें ए को क्लिक किया जाता है, चेक ऑपरेशन आवश्यक नहीं है।

तो, कैसे वर्तमान क्लिक करने योग्य ViewFlipper जाँच करने के लिए और पिछले ViewFlipper क्लिक किया। मुझे कोई समस्या नहीं मिली कि समस्या की जांच कैसे करें।

इसे देखो, मुझे लगता है, मेरी समस्या अधिक स्पष्ट है।

enter image description here

संपादित: 16 दिसंबर

@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

उन्हें आईडी दें और फिर आईडी स्टोर करें ... वास्तव में बहुत ही सरल। – Warpzit

+2

मैं उन्हें पहले से ही सभी व्यूफ्लिपर respecive आईडी देता हूं, मैं अब viewflipper7 पर क्लिक कर रहा हूं, लेकिन पिछले क्लिक करने योग्य viewflipper3 है। तो viewflipper3 मान कैसे प्राप्त करें और viewflipper7 vlaue की तुलना कैसे करें, प्रत्येक व्यूफ्लिपर में एक टेक्स्टव्यू है जहां मूल्य संग्रहीत किया जाता है। –

+0

इसे कोड plz में करें, इसलिए जब आप दृश्य स्विच करते हैं तो आप फ़ील्ड पर अंतिम दृश्य = 1 पर एक मान सेट करते हैं, फिर अगली बार जब आप एक नया दृश्य बनाते हैं तो आप इसे फिर से सेट करने से पहले इसे पढ़ते हैं ... बहुत सीधे आगे – Warpzit

उत्तर

3

समस्या यह है कि आपके कोड में चयनित चयनित व्यूफ्लिपर की स्थिति गुम है। मैं केवल आंशिक कोड प्रदान कर सकता हूं क्योंकि मुझे आपका शेष कोड नहीं पता है।"के लिए देखो मेरी कोड में

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 

    } 
} 

,:

वर्ग है जो यहाँ पर अपने कोड का टुकड़ा है, में

" सार्वजनिक शून्य onClick (देखें v) { "विधि, तो आप इस तरह कुछ करना चाहते हैं // परिवर्तन "विशेष रूप से। आप देखेंगे कि मैंने पिछले फ्लिपर को स्टोर करने के लिए एक पूर्णांक का उपयोग किया था। और फिर जिस तरह से मैं पहली बार जांचता हूं, यह जांचना है कि पिछला फ्लीपर -1 था या नहीं। फिर अंत में, सुनिश्चित करें कि आप अगली बार "पिछली" फ्लिपर आईडी को अपडेट करने के लिए पिछले फ्लिपर आईडी के रूप में वर्तमान फ़्लिपर आईडी सेट करें।

भी, ध्यान दें कि मेरे पास एक नेस्टेड स्विच स्टेटमेंट था, क्योंकि वर्तमान और पिछले फ्लिपर्स के आधार पर आपको क्या होता है, इसके लिए आपको अपने तर्क के लिए अतिरिक्त चेक की एक गुच्छा की आवश्यकता होती है।

उत्तर मुझे बताई गई जानकारी (और मेरी समझ में सबसे अच्छी तरह से) पर मेरी क्षमताओं का सबसे अच्छा है, इसलिए मुझे आशा है कि इससे मदद मिलेगी।

पीएस मुझे दोषी लगता है कि यह कहता है, लेकिन अगर मेरा जवाब सही था, तो कृपया मेरा जवाब जांचें, क्योंकि मुझे वास्तव में बाउंटी प्रश्न पूछने के लिए कुछ बक्षीस अंक चाहिए लेकिन मुझे नहीं लगता कि मेरे पास पर्याप्त अंक हैं। धन्यवाद! और शुभ छुट्टियां

0

ठीक है आप कोई कोड से पता चलता है कि आप अपने विचारों के बीच कैसे स्विच लेकिन यहाँ यह जाता है: जब आप अपने क्लिक पर या में कोड में स्विच जो भी आपने आखिरी = currentselected और currentselected = चयनित व्यूफ्लिपर की आईडी को यादगार सेट किया है। वास्तव में मृत सरल। ओह और पहली बार जब आप यह देखने के लिए चेक करते हैं कि क्या यह शून्य है। यदि आप चाहते हैं कि मैं अधिक सटीक आपूर्ति कोड बनूं जो दिखाता है कि आप अपने विचारों के बीच कैसे स्विच करते हैं।

+0

मेरे प्रश्न को संपादित करें जो संपादित किया गया है। –

संबंधित मुद्दे