我正在编写一个Android应用程序,我有一个主屏幕,启动不同的播放模式(不同的活动)。我想使用开始每个活动的结果
startActivityForResult()
,其中requestCode等于每种游戏类型的常量(简单,中等,硬)。我试图用枚举来做这件事,但是日食告诉我startActivityForResult(Intent i, int request code) is not applicable for arguments (Intent, [name of my enum class])
。我尝试用内部类实现它,但它不起作用。
我希望利用枚举,以便代码在onActivityResult()中更具可读性(即检查resultCode == EASY而不是resultCode == 1)。
根据我的理解,Enums的行为与整数相同。如果我错了,请纠正我。
有人可以帮忙吗?
答案 0 :(得分:1)
您可以为每种类型创建一个最终变量:
final int EASY =0;
final int MEDIUM= 0;
并在代码中使用这些值。
答案 1 :(得分: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;
}
}
然后,在Activity
:
setResult(MyActivityResult.SOMETHING_ELSE.value);
finish();
在您的onActivityResult()
:
MyActivityResult result = MyActivityResult.fromValue(resultCode);
这是很多额外的代码,老实说,你仍然最终传递一个整数(即Activity
不需要发送有效的结果)所以我不一定建议这样做,但它如果你想在结果中添加行为,这是一种方法。