Search code examples
javaandroidandroid-studiofinal

How to declare var like a final if this var was defined in method in Android Studio


final Button Btn = (Button) findViewById(R.id.Btn);
        Btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(),"Some text here"+ Wynik,Toast.LENGTH_SHORT).show();

But then I'm recived this error

Error:(87, 69) error: local variable Wynik is accessed from within inner class; needs to be declared final

Wynik is in my

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        int Wynik;

And lower in code but in this same class

Wynik = 70*RT/100 + tspocz; 

My final Button is under that code (I'm makeing this app in Android Studio) if that have a matter.


Solution

  • Declare Wynik as a class field (outside of onCreate):

    int Wynik;
    
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my);
    

    Then your click method won't have any problem referencing it.