android - नेस्टेड टुकड़ों से डेटा को मूल खंड में भेजना




android-fragments parameter-passing (4)

आप getChildFragmentManager() उपयोग कर सकते हैं और नेस्टेड टुकड़े ढूंढ सकते हैं, उन्हें प्राप्त कर सकते हैं और इनपुट मानों को पुनर्प्राप्त करने के लिए कुछ विधियां चला सकते हैं

मेरे पास एक Fragment FR1 है जिसमें कई Nested Fragments ; FRa , FRb , FRcFR1 के लेआउट पर Buttons दबाकर ये Nested Fragments बदल दिए जाते हैं। Nested Fragments में से प्रत्येक में उनके भीतर कई इनपुट फ़ील्ड होते हैं; जिसमें NumberPickers , NumberPickers और Spinners जैसी चीजें शामिल हैं। जब मेरा उपयोगकर्ता Nested Fragments लिए सभी मानों को भरता है और भरता है, तो FR1 (पैरेंट खंड) में सबमिट बटन होता है।

फिर मैं अपने Nested Fragments से अपने मूल्य कैसे प्राप्त कर सकता हूं और उन्हें FR1 में ला सकता हूं।

  1. सभी Views घोषित किए जाते हैं और प्रत्येक Nested Fragment भीतर प्रोग्रामेटिक रूप से संभाले जाते हैं।
  2. पैरेंट Fragment , FR1 Fragment के लेनदेन को संभालता है।

मुझे आशा है कि यह प्रश्न पर्याप्त स्पष्ट होगा और मुझे यकीन नहीं है कि पोस्ट करने के लिए कोड आवश्यक है, लेकिन अगर कोई अन्यथा महसूस करता है तो मैं ऐसा कर सकता हूं।

संपादित करें 1:

यहां बताया गया है कि मैं अपने Nested Fragments कैसे जोड़ता हूं:

tempRangeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            getChildFragmentManager().beginTransaction()
                    .add(R.id.settings_fragment_tertiary_nest, tempFrag)
                    .commit();

        }
    });

    scheduleButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            getChildFragmentManager().beginTransaction()
                    .add(R.id.settings_fragment_tertiary_nest, scheduleFrag)
                    .commit();
        }
    });

    alertsButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            getChildFragmentManager().beginTransaction()
                    .add(R.id.settings_fragment_tertiary_nest, alertsFrag)
                    .commit();

        }
    });

    submitProfile.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            constructNewProfile();
        }
    });

जहां मेरा constructNewProfile() विधि को मेरे Nested Fragments से मूल्यों की आवश्यकता होती है।

public Fragment tempFrag = fragment_profile_settings_temperature
        .newInstance();
public Fragment scheduleFrag= fragment_profile_settings_schedules
            .newInstance();
public Fragment alertsFrag = fragment_profile_settings_alerts
        .newInstance();

उपरोक्त पैरेंट खंड के खेतों को संदर्भित करता है; और वे कैसे शुरू में तत्काल हैं।


इंटरफ़ेस का उपयोग करने के बजाय, आप नीचे से बच्चे के टुकड़े को कॉल कर सकते हैं:

( (YourFragmentName) getParentFragment() ).yourMethodName();

टुकड़ों के बीच डेटा पास करने का सबसे अच्छा तरीका इंटरफ़ेस का उपयोग कर रहा है। यहां आपको क्या करना है: आप में घोंसला घोंसला:

public interface OnDataPass {
    public void OnDataPass(int i);
}

OnDataPass dataPasser;

@Override
public void onAttach(Activity a) {
    super.onAttach(a);
    dataPasser = (OnDataPass) a;
}

public void passData(int i) {
    dataPasser.OnDataPass(i);
}

आपके माता-पिता के टुकड़े में:

public class Fragment_Parent extends Fragment implements OnDataPass {
...

    @Override
    public void OnDataPass(int i) {
        this.input = i;
    }

    btnOk.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Fragment fragment = getSupportFragmentManager().findFragmentByTag("0");
            ((Fragment_Fr1) fragment).passData();
        }
    }

}

मेरे मामले में (new Fragment()).hello(); मेरे लिए एक और टुकड़ा समारोह कॉल करने के लिए ठीक काम कर रहा है





android-nested-fragment