startActivityForResult with an enum



我正在写一个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不需要发送一个有效的结果),所以我不一定建议这样做,但它是一种方式,如果你想添加行为的结果。

相关内容

  • 没有找到相关文章

最新更新