[英]JAVA - Variable is always null
我已經編寫了此代碼,其中如果文件存在或不存在,變量DEVICE
都會更改。 因此,我編寫了此代碼,但變量DEVICE
始終為null
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。 我會建議更換while
與if
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.