Search code examples
androiddevelopment-environmentfinalcalculated-field

Storing Seekbar value but keep getting that I have to use final


"Variable is accessed within inner class Needs to be declared final" is the the error I get at first. So I change it to final. Once I change it to final I get a different error saying "Cannot assign value to final variable". I'm kind of stuck here on what to do here. Its giving me the error on int exam_grade

    public class CalculateGradeActivity extends Activity {



@Override
protected void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    setContentView(R.layout.calculate_grade_view);
    seekbar();



}
public void seekbar(){
    SeekBar seek_bar1 = (SeekBar) findViewById(R.id.seekBarExam);


    final TextView text_view = (TextView) findViewById(R.id.percentageSeekbar1);



    int exam_grade;
    TextView text_view5 = (TextView) findViewById(R.id.numeric_grade_id_output);
    text_view5.setText(String.valueOf(exam_grade));


    int progress = seek_bar1.getProgress();
    text_view.setText(String.valueOf(progress));




    seek_bar1.setOnSeekBarChangeListener(

            new SeekBar.OnSeekBarChangeListener() {

                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    exam_grade = progress;
                    text_view.setText(String.valueOf(progress) + "%");


                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {

                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {

                }
            }
    );








}//ends seekbar function

}


Solution

  • Hi don't declare your textview as final, put it in the class attributes instead.

    public class CalculateGradeActivity extends Activity {
    
        TextView text_view;
        SeekBar seek_bar1
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculate_grade_view);
        seek_bar1 = (SeekBar) findViewById(R.id.seekBarExam);
        text_view = (TextView) findViewById(R.id.percentageSeekbar1);
        seekbar();
    
    }
    

    Do the same for all views(Declare them as attributes).