Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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:需要常量表达式。开关状态使用在另一个计算中定义的一些常量_Java_Android_Switch Statement - Fatal编程技术网

java:需要常量表达式。开关状态使用在另一个计算中定义的一些常量

java:需要常量表达式。开关状态使用在另一个计算中定义的一些常量,java,android,switch-statement,Java,Android,Switch Statement,在switch语句中,我使用了在另一个类中定义的一些常量。 IDE告诉我所需的常量表达式 我正在编写一个Android应用程序,在MainActivity中我这样写: private static final int HOMEFRAGMENTINDEX = 0; private static final int MESSAGEFRAGMENTINDEX = 1; private static final int SNSFRAGMENTINDEX = 2; private static final

在switch语句中,我使用了在另一个类中定义的一些常量。 IDE告诉我所需的
常量表达式

我正在编写一个Android应用程序,在MainActivity中我这样写:

private static final int HOMEFRAGMENTINDEX = 0;
private static final int MESSAGEFRAGMENTINDEX = 1;
private static final int SNSFRAGMENTINDEX = 2;
private static final int DISCOVERYFRAGMENTINDEX = 3;
private static final int MINEFRAGMENTINDEX = 4;

public static int getHomefragmentindex() {
    return HOMEFRAGMENTINDEX;
}

public static int getMessagefragmentindex() {
    return MESSAGEFRAGMENTINDEX;
}

public static int getSnsfragmentindex() {
    return SNSFRAGMENTINDEX;
}

public static int getDiscoveryfragmentindex() {
    return DISCOVERYFRAGMENTINDEX;
}

public static int getMinefragmentindex() {
    return MINEFRAGMENTINDEX;
}
final int homeFragmentIndex = MainActivity.getHomefragmentindex();
final int messageFramentIndex = MainActivity.getMessagefragmentindex();
final int snsFragmentIndex = MainActivity.getSnsfragmentindex();
final int discoveryFragmentIndex = MainActivity.getDiscoveryfragmentindex();
final int mineFragentIndex = MainActivity.getMinefragmentindex();

switch (mCurIndicator) {
case homeFragmentIndex:
    // do something
    break;
case messageFramentIndex:
    // do something
    break;
case snsFragmentIndex:
    // do something
    break;
case discoveryFragmentIndex:
    // do something
    break;
case mineFragentIndex:
    // do something
    break;
default:
    break;
}
在另一个类中,我使用如下switch语句:

private static final int HOMEFRAGMENTINDEX = 0;
private static final int MESSAGEFRAGMENTINDEX = 1;
private static final int SNSFRAGMENTINDEX = 2;
private static final int DISCOVERYFRAGMENTINDEX = 3;
private static final int MINEFRAGMENTINDEX = 4;

public static int getHomefragmentindex() {
    return HOMEFRAGMENTINDEX;
}

public static int getMessagefragmentindex() {
    return MESSAGEFRAGMENTINDEX;
}

public static int getSnsfragmentindex() {
    return SNSFRAGMENTINDEX;
}

public static int getDiscoveryfragmentindex() {
    return DISCOVERYFRAGMENTINDEX;
}

public static int getMinefragmentindex() {
    return MINEFRAGMENTINDEX;
}
final int homeFragmentIndex = MainActivity.getHomefragmentindex();
final int messageFramentIndex = MainActivity.getMessagefragmentindex();
final int snsFragmentIndex = MainActivity.getSnsfragmentindex();
final int discoveryFragmentIndex = MainActivity.getDiscoveryfragmentindex();
final int mineFragentIndex = MainActivity.getMinefragmentindex();

switch (mCurIndicator) {
case homeFragmentIndex:
    // do something
    break;
case messageFramentIndex:
    // do something
    break;
case snsFragmentIndex:
    // do something
    break;
case discoveryFragmentIndex:
    // do something
    break;
case mineFragentIndex:
    // do something
    break;
default:
    break;
}

Android Studio告诉我需要
常量表达式
,但我真正使用的是
静态fianl int
。也许您可以帮助解决这个问题,谢谢。

McUriIndicator是什么?如果您不调用get方法,但使private statics->public static和call thosestatic不能在常量为或用于McUriIndicator的方法中完成,McUriIndicator是private static intHi,这会有帮助吗?谢谢您的建议。但我在A类中定义了这些常量,在B类中使用了switch语句,所以我想知道如何做到这一点。这就是为什么它们是公共的…'您的类名。变量名“。。。给它一个镜头是的,使用公共是正确的。谢谢你的耐心。@ShuaiWang你能接受答案吗…:-)当然,我做了。谢谢
class Some{
    public static final int HOMEFRAGMENTINDEX = 0;
    public static final int MESSAGEFRAGMENTINDEX = 1;
    public static final int SNSFRAGMENTINDEX = 2;
    public static final int DISCOVERYFRAGMENTINDEX = 3;
    public static final int MINEFRAGMENTINDEX = 4;

}

class AnotherClass{
    void yourMethod(int mCurIndicator){ 
        switch (mCurIndicator) {
            case Some.HOMEFRAGMENTINDEX:
                // do something
                break;
            case Some.MESSAGEFRAGMENTINDEX:
                // do something
                break;
            case Some.SNSFRAGMENTINDEX:
                // do something
                break;
            case Some.DISCOVERYFRAGMENTINDEX:
                // do something
                break;
            case Some.MINEFRAGMENTINDEX:
                // do something
                break;
            default:
                break;
            }

    }
}