Java 带有枚举的startActivityForResult
我正在编写一个android应用程序,我有一个主屏幕,可以启动不同的播放模式(不同的活动)。我想使用Java 带有枚举的startActivityForResult,java,android,eclipse,enums,Java,Android,Eclipse,Enums,我正在编写一个android应用程序,我有一个主屏幕,可以启动不同的播放模式(不同的活动)。我想使用 startActivityForResult(),对于每种类型的游戏(简单、中等、困难),requestCode等于某个常量。我试图用一个枚举来实现这一点,但eclipse告诉我startActivityForResult(Intent I,int-request-code)不适用于参数(Intent,[我的枚举类的名称])。我试图用一个内部类来实现它,但它不起作用 我希望利用枚举,以便在onA
startActivityForResult()
,对于每种类型的游戏(简单、中等、困难),requestCode等于某个常量。我试图用一个枚举来实现这一点,但eclipse告诉我startActivityForResult(Intent I,int-request-code)不适用于参数(Intent,[我的枚举类的名称])
。我试图用一个内部类来实现它,但它不起作用
我希望利用枚举,以便在onActivityResult()中代码更具可读性(即检查resultCode==EASY而不是resultCode==1) 据我所知,枚举的作用与整数相同。如果我错了,请纠正我
有人能帮忙吗?您可以为每种类型创建一个最终变量,如下所示:
final int EASY =0;
final int MEDIUM= 0;
并在代码中使用这些值。您可以通过稍微多做一些工作来完成以下操作:
public enum MyActivityResult {
OK(0),
CANCELED(1),
SOMETHING_ELSE(2)
UNKNOWN(3);
public final int value;
MyActivityResult(int value) {
this.value = value;
}
public static MyActivityResult fromValue(int value) {
for (MyActivityResult result : values()) {
if (result.value == value) return result;
}
return UNKNOWN;
}
}
然后,在您的活动中
:
setResult(MyActivityResult.SOMETHING_ELSE.value);
finish();
在您的onActivityResult()
中:
老实说,这需要很多额外的代码,而且最终还是会传递一个整数(即
活动
不需要发送有效的结果),所以我不一定建议这样做,但是,如果您想在结果中添加行为,这是一种方法。我希望利用枚举,以便在ActivityResult()中的代码更可读(即,检查resultCode==EASY而不是resultCode==1)。哦。使用final变量将允许您使用使代码可读的命令。您可以使用resultCode==EASY,因为在该活动中,EASY在任何地方都等于1。我的意思是最后一个变量应该在活动级别创建哎呀,我错了,你是对的。这里可以使用enum吗?据我所知,我不这么认为,因为它需要int,而enum是它自己的类型。
MyActivityResult result = MyActivityResult.fromValue(resultCode);