Android 为什么我无法从枚举中获取字符串?

Android 为什么我无法从枚举中获取字符串?,android,Android,我在代码上定义了一个枚举: public enum TimeType { One("1"), Two("2"), Three("3"); private String _friendlyName; TimeType(String friendlyName) { this._friendlyName = friendlyName; } @Override public String toStr

我在代码上定义了一个枚举:

public enum TimeType
{
     One("1"),
     Two("2"),
     Three("3");

     private String _friendlyName;

     TimeType(String friendlyName) {
         this._friendlyName = friendlyName;
     }


     @Override
     public String toString() {
         return _friendlyName;
     }
 }
现在,在某个地方,我尝试将枚举转换为字符串:

  TimeType t1 = TimeType.One;
我试着用不止一种方式做这件事。。但我有个例外

 String str1 = t1.toString();                           // fail
 String str2 = TimeType.values()[t2].toString();        // fail
 String str3 = t1.name();                               // fail
我的例子是:

public static enum VideoBitrate {
        HD1080("HD 1080", 0),
        HD720("HD 720", 1),
        MV480("MV 480", 2);

        private String stringValue;
        private int intValue;

        VideoBitrate(String toString, int value) {
            stringValue = toString;
            intValue = value;
        }

        public static VideoBitrate valueOf(int value) {
            switch (value) {
                case 0:
                    return HD1080;
                case 1:
                    return HD720;
                case 2:
                    return MV480;
                default:
                    return null;
            }
        }

        public int value() {
            return intValue;
        }

        @Override
        public String toString() {
            return stringValue;
        }
    }
使用

我的例子是:

public static enum VideoBitrate {
        HD1080("HD 1080", 0),
        HD720("HD 720", 1),
        MV480("MV 480", 2);

        private String stringValue;
        private int intValue;

        VideoBitrate(String toString, int value) {
            stringValue = toString;
            intValue = value;
        }

        public static VideoBitrate valueOf(int value) {
            switch (value) {
                case 0:
                    return HD1080;
                case 1:
                    return HD720;
                case 2:
                    return MV480;
                default:
                    return null;
            }
        }

        public int value() {
            return intValue;
        }

        @Override
        public String toString() {
            return stringValue;
        }
    }
使用


问题是您忘记添加
当您声明枚举时

public enum TimeType{
     One("1"),
     Two("2"),
     Three("3"); // add ;

     private String _friendlyName;

     TimeType(String friendlyName) {
         this._friendlyName = friendlyName;
     }

     @Override
     public String toString() {
         return _friendlyName;
     }
 }
下面是Java
goo.gl/evcKMq

这是Android的测试

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(this,TimeType.Two.toString(),Toast.LENGTH_SHORT).show();

        TimeType t1 = TimeType.One;
        String str1 = t1.toString();

        Log.e("TAG","str1 === "+str1);
    }

    public enum TimeType
    {
        One("1"),
        Two("2"),
        Three("3"); // add ;

        private String _friendlyName;
        TimeType(String friendlyName) {
            this._friendlyName = friendlyName;
        }
        @Override
        public String toString() {
            return _friendlyName;
        }
    }
}
Toast
显示屏2和
Logcat
打印

07-12 00:05:42.892 2975-2975/com.example.newuser.testenum E/TAG:str1 ==1


问题是您忘记添加
当您声明枚举时

public enum TimeType{
     One("1"),
     Two("2"),
     Three("3"); // add ;

     private String _friendlyName;

     TimeType(String friendlyName) {
         this._friendlyName = friendlyName;
     }

     @Override
     public String toString() {
         return _friendlyName;
     }
 }
下面是Java
goo.gl/evcKMq

这是Android的测试

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(this,TimeType.Two.toString(),Toast.LENGTH_SHORT).show();

        TimeType t1 = TimeType.One;
        String str1 = t1.toString();

        Log.e("TAG","str1 === "+str1);
    }

    public enum TimeType
    {
        One("1"),
        Two("2"),
        Three("3"); // add ;

        private String _friendlyName;
        TimeType(String friendlyName) {
            this._friendlyName = friendlyName;
        }
        @Override
        public String toString() {
            return _friendlyName;
        }
    }
}
Toast
显示屏2和
Logcat
打印

07-12 00:05:42.892 2975-2975/com.example.newuser.testenum E/TAG:str1 ==1


不,对不起。。。这是在我的代码上,没有解决问题。@Of请更新你的代码,我已经测试过了,它工作了。请检查goo.gl/evcKMqi中的演示。我看到这个在演示上工作了-但是在我的android上它不工作不,对不起。。。这是在我的代码上,没有解决问题。@OF请更新您的代码,我已经测试过了,它工作了。请检查goo.gl/evcKMqi中的演示,查看演示中的这项工作-但在我的android上,这项工作不工作。'Fail'不是问题描述。'Fail'不是问题描述。