Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有枚举的startActivityForResult_Java_Android_Eclipse_Enums - Fatal编程技术网

Java 带有枚举的startActivityForResult

Java 带有枚举的startActivityForResult,java,android,eclipse,enums,Java,Android,Eclipse,Enums,我正在编写一个android应用程序,我有一个主屏幕,可以启动不同的播放模式(不同的活动)。我想使用 startActivityForResult(),对于每种类型的游戏(简单、中等、困难),requestCode等于某个常量。我试图用一个枚举来实现这一点,但eclipse告诉我startActivityForResult(Intent I,int-request-code)不适用于参数(Intent,[我的枚举类的名称])。我试图用一个内部类来实现它,但它不起作用 我希望利用枚举,以便在onA

我正在编写一个android应用程序,我有一个主屏幕,可以启动不同的播放模式(不同的活动)。我想使用
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);