Android: How to put an Enum in a Bundle?

前端 未结 12 1435
别那么骄傲
别那么骄傲 2020-12-22 16:56

How do you add an Enum object to an Android Bundle?

12条回答
  •  星月不相逢
    2020-12-22 17:21

    A simple way, assign integer value to enum

    See the following example:

    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;
        }
    
    }
    

    Sender Side:

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

    Receiver Side:

    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();
    

提交回复
热议问题