android - सरक - बीएससी नर्सिंग के बाद क्या करे




एंड्रॉइड: बंडल में एनम कैसे डालें? (8)

Bundle.putSerializable (स्ट्रिंग कुंजी, Serializable एस) और bundle.getSerializable (स्ट्रिंग कुंजी) का उपयोग करें:

enum Mode = {
  BASIC, ADVANCED
}

Mode m = Mode.BASIC;

bundle.putSerializable("mode", m);

...

Mode m;
m = bundle.getSerializable("mode");

प्रलेखन: http://developer.android.com/reference/android/os/Bundle.html

आप एंड्रॉइड बंडल में एनम ऑब्जेक्ट कैसे जोड़ते हैं?


Enums Serializable हैं इसलिए कोई मुद्दा नहीं है।

निम्नलिखित enum दिया गया:

enum YourEnum {
  TYPE1,
  TYPE2
}

बंडल:

// put
bundle.putSerializable("key", YourEnum.TYPE1);

// get 
YourEnum yourenum = (YourEnum) bundle.get("key");

आशय:

// put
intent.putExtra("key", yourEnum);

// get
yourEnum = (YourEnum) intent.getSerializableExtra("key");

एक अन्य विकल्प:

public enum DataType implements Parcleable {
SIMPLE, COMPLEX;

public static final Parcelable.Creator<DataType> CREATOR = new Creator<DataType>() {

    @Override
    public DataType[] newArray(int size) {
        return new DataType[size];
    }

    @Override
    public DataType createFromParcel(Parcel source) {
        return DataType.values()[source.readInt()];
    }
};

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

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(this.ordinal());
}

}


एक आसान तरीका, enum के लिए पूर्णांक मूल्य असाइन करें

निम्नलिखित उदाहरण देखें:

public enum MyEnum {

    TYPE_ONE(1), TYPE_TWO(2), TYPE_THREE(3);

    private int value;

    MyEnum(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

}

प्रेषक साइड:

Intent nextIntent = new Intent(CurrentActivity.this, NextActivity.class);
nextIntent.putExtra("key_type", MyEnum.TYPE_ONE.getValue());
startActivity(nextIntent);

रिसीवर साइड:

Bundle mExtras = getIntent().getExtras();
int mType = 0;
if (mExtras != null) {
    mType = mExtras.getInt("key_type", 0);
}

/* OR
    Intent mIntent = getIntent();
    int mType = mIntent.getIntExtra("key_type", 0);
*/

if(mType == MyEnum.TYPE_ONE.getValue())
    Toast.makeText(NextActivity.this, "TypeOne", Toast.LENGTH_SHORT).show();
else if(mType == MyEnum.TYPE_TWO.getValue())
    Toast.makeText(NextActivity.this, "TypeTwo", Toast.LENGTH_SHORT).show();
else if(mType == MyEnum.TYPE_THREE.getValue())
    Toast.makeText(NextActivity.this, "TypeThree", Toast.LENGTH_SHORT).show();
else
    Toast.makeText(NextActivity.this, "Wrong Key", Toast.LENGTH_SHORT).show();

पूर्णता के लिए, यह एक पूर्ण उदाहरण है कि कैसे एक बंडल से एक enum वापस करने के लिए।

निम्नलिखित enum दिया गया:

enum EnumType{
    ENUM_VALUE_1,
    ENUM_VALUE_2
}

आप enum को एक बंडल में डाल सकते हैं:

bundle.putSerializable("enum_key", EnumType.ENUM_VALUE_1);

और enum वापस प्राप्त करें:

EnumType enumType = (EnumType)bundle.getSerializable("enum_key");

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मैं एक ही समस्या के साथ आया था और मैं साझा करना चाहता हूं कि मैंने इसे कैसे हल किया। मिगुएल ने कहा कि कुंजी यही है: Enums Serializable हैं।

निम्नलिखित enum दिया गया:

enum YourEnumType {
    ENUM_KEY_1, 
    ENUM_KEY_2
}

डाल:

Bundle args = new Bundle();
args.putSerializable("arg", YourEnumType.ENUM_KEY_1);

मैं कोटलिन का उपयोग करता हूं।

companion object {

        private enum class Mode {
            MODE_REFERENCE,
            MODE_DOWNLOAD
        }
}

फिर इरादे में डाल दिया:

intent.putExtra(KEY_MODE, Mode.MODE_DOWNLOAD.name)

जब आप मूल्य प्राप्त करने के लिए नेट:

mode = Mode.valueOf(intent.getStringExtra(KEY_MODE))

बस इसे टर्मिनल () से int रूप में पास करें। इसे मानों से पुनर्स्थापित करें []।





android-bundle