android कैसे गतिविधियों के बीच वर्ग चर पारित करने के लिए?




variables android-activity (2)

इस सवाल का पहले से ही उत्तर दिया गया है:

मैंने एक क्लास टेलनेट बनाया है और मैं इसे मुख्य सक्रियता पर पहचाना। अब मैं प्रोजेक्ट की अन्य सभी गतिविधियों में मुख्य गतिविधि में इनकेआइलाइज्ड टेलनेट तक पहुंचना चाहता हूं। मैं क्या कर रहा हूं एक समारोह मिल रहा है:

public Telnet getMyTelnet() {
    return telnet;
}

और फिर बस इसे कहो जहाँ भी मैं चाहता हूँ जब मैं उसे टुकड़ों में बुलाता हूँ तो मैं इसे इस तरह करता हूं:

MainActivity activity = (MainActivity) getActivity();
            telnet = activity.getMyTelnet();

समस्या यह है कि जब मुझे किसी अन्य गतिविधि में इसकी आवश्यकता होती है मैं यह कैसे कर सकता हूं? मैंने यह कोशिश की, लेकिन कोई भाग्य नहीं।

MainActivity a = new MainActivity ();
            telnet = a.getTelnet();

MyActivity क्लास के रूप में स्थैतिक के रूप में टेलनेट इंस्टेंस बनाएं और सही यह विधि

punlic static Telnet telnet;

onCreate() {
 //initialise telnet
}

onResume() {
//initialise telnet if null;
}

onStop() {
//make telnet null
}
public static Telnet getTelnet() {
return telnet;

मुझे पता है कि यह काम करता है या नहीं


एंड्रॉइड में क्रियाओं के बीच वस्तुओं को भेजने और प्राप्त करने के दो तरीके हैं: उन्हें चाहिए:

  • सीरियलाइज़ेबल (इम्प्लामेंट ऑब्जेक्ट के रूप में सीरियलिज़ेबल)
    या
  • पार्सलेट योग्य (पार्सल योग्य वस्तु के रूप में लागू करना)

आपको पेससेलबिल लागू करने और निम्नलिखित विधियों को कक्षा में जोड़ने की आवश्यकता होगी

पैरामीटर के रूप में पार्सल के साथ एक कन्स्ट्रक्टर

public Telnet(Parcel in) {
    readFromParcel(in);
}

लिखोओपरेल विधि को ओवरराइड करें

 @Override
    public void writeToParcel(Parcel dest, int flags) {

        // write each field into the parcel. When we read from parcel, they
        // will come back in the same order
        dest.writeString(strVar); // to write your string variables
        dest.writeInt(intVar); // to write your int variables
    }

पार्सल से पढ़ने के लिए एक विधि

private void readFromParcel(Parcel in) {

    strVar= in.readString();
    intVar= in.readInt();
}

एक पार्सल निर्माता

public static final Parcelable.Creator CREATOR =
    new Parcelable.Creator() {
        public Telnet createFromParcel(Parcel in) {
            return new Telnet(in);
        }

        public Telnet[] newArray(int size) {
            return new Telnet[size];
        }
    };

@Override
    public int describeContents() {
        return 0;
    }

तो आपका टेलनेट वर्ग अन्य गतिविधियों में स्थानांतरण के लिए तैयार है

अब इसका प्रयोग करें: मुख्य कार्य में:

Telnet obj = new Telnet();

// Set values etc.

Intent i = new Intent(this, MyActivity.class);
i.putExtra("your.package.Telnet", obj);

startActivity(i);

और दूसरी गतिविधि में:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Bundle b = getIntent().getExtras();
        Telnet obj =
            b.getParcelable("your.package.Telnet");
    }






android-activity