简体   繁体   English

使用 setOnSeekBarChangeListener 或 Button 的两个 SeekBar 值的 Android Java 总和

[英]Android Java Sum of values from Two SeekBar's using setOnSeekBarChangeListener or Button

being new in Android I'm trying to just simply add (sum) adjusted values from two SeekBars using setOnSeekBarChangeListener or using Button.作为 Android 中的新手,我只是尝试使用 setOnSeekBarChangeListener 或使用 Button 从两个 SeekBar 中添加(求和)调整后的值。 The project below is work fine but the sum still is 0. I can't find a solution.下面的项目工作正常,但总和仍然是 0。我找不到解决方案。 Thanks for your help.谢谢你的帮助。 Usually, I'm using Spring Boot and Vaadin and it is so simple :)通常,我使用的是 Spring Boot 和 Vaadin,它非常简单:)


    private int progress1 = 0;
    private int progress2 = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textViewMain;
        Button button;
        final TextView textViewMain_ = findViewById(R.id.textViewMain);

        Button buttonSum = findViewById(R.id.button);
        SeekBar seekBar = findViewById(R.id.seekBar);
        final TextView textViewSeekBar = findViewById(R.id.textView2);
        SeekBar seekBar2 = findViewById(R.id.seekBar2);
        final TextView textViewSeekBar2 = findViewById(R.id.textView3);
        seekBar.setMax(600);
        seekBar.setProgress(5);
        seekBar2.setMax(900);
        seekBar2.setProgress(5);


        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            public int progress1 = 0;

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress1, boolean fromUser) {
                this.progress1 = progress1;
                // getUpdateTotal();
                //textViewSeekBar.setText(Integer.parseInt(String.valueOf(seekBar)));//todo not work
                textViewSeekBar.setText(Integer.toString(progress1));
                Log.i("Seeker1: ", Integer.toString(progress1));

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
        seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            public int progress2 = 0;

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress2, boolean fromUser) {
                this.progress2 = progress2;
                //getUpdateTotal();
                textViewSeekBar2.setText(Integer.toString(progress2));
                Log.i("Seeker2: ", Integer.toString(progress2));
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });


        buttonSum.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getSummaryTwoSeekBarValue(progress1, progress2);
                Log.i("", getSummaryTwoSeekBarValue(progress1, progress2));

            }
        });

    }

    public String getSummaryTwoSeekBarValue(int progress1, int progress2) {

        final TextView textViewMain_ = findViewById(R.id.textViewMain);
        int total = progress1 + progress2;
        String totalString = String.valueOf(total);
        Log.i("", totalString);
        textViewMain_.setText(String.valueOf(totalString));
        return totalString;
    }


}```
[enter image description here][1]


  [1]: https://i.stack.imgur.com/HDx12.png

You are defining progress1 and progress2 in both the main class and in the listener, so the class variable will keep being 0, you have to use (your class name).this.progress1 = progress1;您在主类和侦听器中都定义了 progress1 和 progress2,因此类变量将保持为 0,您必须使用(your class name).this.progress1 = progress1; and same in the second seek bar to modify the main class one instead of the listener one同样在第二个搜索栏中修改主类而不是侦听器


private int progress1;
private int progress2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textViewMain;
        final TextView textViewMain_ = findViewById(R.id.textViewMain);
        SeekBar seekBar = findViewById(R.id.seekBar);
        final TextView textViewSeekBar = findViewById(R.id.textView2);
        SeekBar seekBar2 = findViewById(R.id.seekBar2);
        final TextView textViewSeekBar2 = findViewById(R.id.textView3);
        seekBar.setMax(600);
        seekBar.setProgress(5);
        seekBar2.setMax(900);
        seekBar2.setProgress(5);


        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress1, boolean fromUser) {
               getSummaryTwoSeekBarValue(progress1,progress2);
                textViewSeekBar.setText(Integer.toString(progress1));
                Log.i("Seeker1: ", Integer.toString(progress1));

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
        seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress2, boolean fromUser) {

          getSummaryTwoSeekBarValue(progress1,progress2);
                textViewSeekBar2.setText(Integer.toString(progress2));
                Log.i("Seeker2: ", Integer.toString(progress2));
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

    }

    public String getSummaryTwoSeekBarValue(int progress1, int progress2) {//int progress1, int progress2
      this.progress1=progress1;
      this.progress2=progress2;

        final TextView textViewMain_ = findViewById(R.id.textViewMain);
        int total = progress1 + progress2;
        String totalString = String.valueOf(total);
        Log.i("", totalString);
        textViewMain_.setText(String.valueOf(totalString));
        return totalString;
    }
}```

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM