【问题标题】:Android Java Sum of values from Two SeekBar's using setOnSeekBarChangeListener or Button使用 setOnSeekBarChangeListener 或 Button 的两个 SeekBar 的值的 Android Java 总和
【发布时间】:2020-09-19 20:27:55
【问题描述】:

作为 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

【问题讨论】:

    标签: java android methods sum android-seekbar


    【解决方案1】:

    您在主类和监听器中都定义了progress1和progress2,因此类变量将保持为0,您必须在第二个搜索栏中使用(your class name).this.progress1 = progress1;和相同来修改主类1而不是听者一

    【讨论】:

      【解决方案2】:
      
      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;
          }
      }```
      

      【讨论】:

      • 以上是最后的工作代码,可能对其他人有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多