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