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;
}
}
下面是Javagoo.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;
}
}
下面是Javagoo.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'不是问题描述。