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

问题描述

在Android中是新手,我试图仅使用setonSeekBarchangelistener或使用Button从两个SeekBar中添加(求和)调整后的值。 下面的项目工作正常,但总和仍为0。我找不到解决方案。谢谢你的帮助。通常,我使用的是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

解决方法

您在主类和侦听器中都定义了progress1和progress2,因此类变量将保持为0,您必须在第二个搜索栏中使用threshold_or1.fix2 <- map2_df( recall_or1_4,precision_or1_4,~curve_intersect_custom(.x,.y,empirical = TRUE,domain = NULL),.id = "i" ) threshold_or1.fix2[459:461,] # A tibble: 3 x 4 i x y method <chr> <dbl> <dbl> <chr> 1 459 0.116 0.809 approxfun 2 460 1.27 0.813 lm 3 461 0.264 0.773 approxfun 和相同的变量来修改主类而不是听者

,

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;
    }
}```