JAVA - 变量始终为空



我制作了这段代码,如果文件存在,变量DEVICE将发生变化。所以我做了这个代码,但变量DEVICE总是空

public class MainActivity extends AppCompatActivity{
    String DEVICE;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        apply = (Button) findViewById(R.id.apply);
        apply.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    checktypezip(DEVICE);
                    while (DEVICE == null){
                        Log.v("Check","Check non completo");
                    }
            }
        });
    }
    public void checktypezip(String string){
        String percorso = Environment.getExternalStorageDirectory().getPath()+"/BAC/.unzipfile/";
        File normalzip = new File (percorso+"desc.txt");
        File flashzip = new File (percorso+"/system/media/bootanimation.zip");
        File samsung = new File (percorso+"/bootsamsung.qmg");
        File flashsamsung = new File (percorso+"/system/media/bootsamsung.qmg");
        String disp;
        disp=string;
        if (normalzip.exists()){
            disp = "Normal";
            string=disp;
        }
        else if (flashzip.exists()){
            disp = "Flashnormal";
            string=disp;
        }
        else if (samsung.exists()){
            disp = "Samsung";
            string=disp;
        }
        else if (flashsamsung.exists()){
            disp = "Samsungflash";
            string=disp;
        }
        else
        {
            disp = "Unknown";
            string=disp;
        }
    }
}

Java使用"按值传递"。这意味着 DEVICE 的值将传递给函数,而不是引用。尽管您正在为参数string赋值,但它永远不会分配给DEVICE

您必须从函数中返回 disp 的值并将其分配给DEVICE

像这样定义你的函数

public String checktypezip()

并像这样称呼它

DEVICE = checktypezip();

checktypezip末尾,您必须添加return disp

附带说明一下:

while (DEVICE == null){
    Log.v("Check","Check non completo");
}

这将无限期地阻塞您的主线程,并在 5 秒后导致 ANR。我建议用if替换while

相关内容

  • 没有找到相关文章

最新更新