为什么静态变量在其他类中不起作用?

时间:2018-02-25 12:42:31

标签: java android static

我在做android项目期间遇到了一个问题...我在" A.java"中声明了六个变量。如下。

public static int a = -1;
public static int b = -1;
public static int c = -1;
public static int d = -1;
public static int e = -1;
public static int f = -1;

我设置如果readMessage等于s1 ...,那么a = 0.继续。 readMessage,s1,s2,s3,s4,s5和s6是字符串。

 if(readMessage.equals(s1)){
                   a=1;
                }
                else if(readMessage.equals(s2)){
                   b=1;
                }
                else if(readMessage.equals(s3) ){
                   c=1;
                }
                else if(readMessage.equals(s4)){

                   d=1;
                }
                else if(readMessage.equals(s5)){

                   e=1;
                }
                else if(readMessage.equals(s6)){
                   f=1;
                }

现在在MainActivity.java中,我编写如下代码。但它不起作用!图像不会改变。

ImgPhoto = (ImageView)findViewById(R.id.logoImageView);

if((A.a) == 1){ImgPhoto.setImageResource(imgId[0]);}
    else if((A.b) == 1){ImgPhoto.setImageResource(imgId[1]);}
    else if((A.c) == 1){ImgPhoto.setImageResource(imgId[2]);}
    else if((A.d) == 1){ImgPhoto.setImageResource(imgId[3]);}
    else if((A.e) == 1){ImgPhoto.setImageResource(imgId[4]);}
    else if((A.f) == 1){ImgPhoto.setImageResource(imgId[5]);}

任何人都可以帮助我吗?我在互联网上搜索但我没有找到任何解决方案.... 我将感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

原始数据类型 INT 的默认值为0.

您可以看到文档here

所有字段A-F的值如果为0。

答案 1 :(得分:0)

来自oracle

  

在声明字段时,并不总是需要分配值。声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或null,具体取决于数据类型。但是,依赖于这样的默认值通常被认为是糟糕的编程风格。

因此static中的所有A.java变量将zero设置为nulljvm 并且第一个if语句将永远为真

最佳解决方案是将它们设置为未使用的值,例如-1

public static int a=-1;
public static int b=-1;
public static int c=-1;
public static int d=-1;
public static int e=-1;
public static int f=-1;