Simone Silvestri
Simone Silvestri

Reputation: 13

JAVA - Variable is always null

I've made this code where the variable DEVICE will change if a file exist or not. So i have made this code but the variable DEVICE is always 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;
        }

    }

}

Upvotes: 1

Views: 1842

Answers (1)

0xDEADC0DE
0xDEADC0DE

Reputation: 2473

Java uses 'pass by value'. This means that the value of DEVICE is passed to your function, not the reference. Although you are assigning a value to the parameter string, it will never be assigned to DEVICE.

You must return the value of disp from your function and assign it to DEVICE

Define your function like this

public String checktypezip()

and call it like this

DEVICE = checktypezip();

At the end of checktypezip, you must add return disp

On a side note:

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

This will block your main thread indefinitely and cause an ANR after 5 seconds. I would suggest replacing while with if

Upvotes: 5

Related Questions