मेरे पास एक ऐप है जो मूल रूप से एक सर्वेक्षण गतिविधि है। कुछ प्रश्नों के लिए आवश्यक है कि जारी रखने से पहले शर्तों का एक सेट या दूसरा सेट भरा जाए।

जब उपयोगकर्ता हाँ दबाता है तो उन्हें संपादन टेक्स्ट फ़ील्ड का एक सेट मिलता है, यदि वे नहीं दबाते हैं तो उन्हें एक अलग सेट मिलता है। कोई भी विकल्प एक ही जारी रखें बटन को सक्षम करता है, लेकिन मुझे यह जांचना होगा कि अगली गतिविधि को जारी रखने से पहले दो सेटों में से केवल एक भर दिया गया है।

    bContinue.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (myYesSection.isShown() && valueCombined.getText().toString().isEmpty()){
                Toast.makeText(getApplicationContext(), "Please enter the combined score.", Toast.LENGTH_LONG).show();
            }
            if (myNoSection.isShown() && valueOne.getText().toString().isEmpty() || valueTwo.getText().toString().isEmpty() || valueThree.getText().toString().isEmpty()){
                Toast.makeText(getApplicationContext(), "Please fill out all fields.", Toast.LENGTH_LONG).show();
            }
            else{
                Intent toNextActivity = new Intent(getApplicationContext(), QuestionThree.class);
                startActivity(toNextActivity);
            }
        }
    });

क्रिया में, यदि valueCombined भर दिया जाता है, तो टोस्ट "कृपया सभी फ़ील्ड भरें" तक आ जाता है। और उपयोगकर्ता अगली गतिविधि पर नहीं जाता है। यदि valueCombined भर दिया गया है, तो मुझे अन्य फ़ील्ड भरने की आवश्यकता नहीं है।

valueOne, valueTwo, और valueThree को भरने से अगली गतिविधि को खोलने की अनुमति मिलती है, लेकिन "कृपया संयुक्त स्कोर दर्ज करें" के लिए एक टोस्ट।

मुझे क्या बदलना चाहिए ताकि बटन प्रेस को जारी रखने के लिए दो शर्तों में से केवल एक की आवश्यकता हो?

कार्य कोड अपडेट करें पाठ के लिए धन्यवाद @Andreas। यह ठीक वही जांचता है जो मुझे चाहिए, और गलत टोस्ट को पॉप नहीं करता है यदि शर्तों का गलत सेट प्रदर्शन पर है:

   bContinue.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int count = 0;
            if (combinedValue.getText().toString().isEmpty()){
                if (myYesSection.isShown()) {
                    Toast.makeText(getApplicationContext(), "Please enter combined score.", Toast.LENGTH_LONG).show();
                }
                count++;
            }
            if (valueOne.getText().toString().isEmpty() || valueTwo.getText().toString().isEmpty() || valueThree.getText().toString().isEmpty()){
                if (myNoSection.isShown()) {
                    Toast.makeText(getApplicationContext(), "Please fill out all fields.", Toast.LENGTH_LONG).show();
                }
                count++;
            }
            if (count == 1){
                Intent toNextActivity = new Intent(getApplicationContext(), QuestionThree.class);
                startActivity(toNextActivity);
            }

        }
-2
SentientFlesh 21 फरवरी 2019, 05:15

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपके पास उदा। 3 शर्तें, और आप केवल तभी कुछ करना चाहते हैं, जब उनमें से 1 सत्य हो, सही स्थितियों की संख्या गिनें:

int count = 0;
if (condition1)
    count++;
if (condition2)
    count++;
if (condition3)
    count++;
if (count == 1) {
    // Yay!
}

या इसे छोटा करने के लिए टर्नरी ऑपरेटरों का उपयोग करें:

if (1 == (condition1 ? 1 : 0) +
         (condition2 ? 1 : 0) +
         (condition3 ? 1 : 0)) {
    // Yay!
}

यदि आपके पास जांचने के लिए केवल 2 शर्तें हैं, तो अनन्य-या ऑपरेटर का उपयोग करें:

if (condition1 ^ condition2) {
    // Yay!
}

जेएलएस 15.22.2. बूलियन लॉजिकल ऑपरेटर्स &, ^, और | ऑपरेटर को इस प्रकार परिभाषित करते हैं:

परिणाम मान true है यदि ऑपरेंड मान भिन्न हैं; अन्यथा, परिणाम false है।

0
Andreas 21 फरवरी 2019, 02:29