0

SeekBarの値を取得しようとしましたが、正しく機能していません。ここにコードがあります:

            sb=(SeekBar)findViewById(R.id.seekBar1);
            sb.setMax(100);
            sb.setProgress(20);
            sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() 
            {

                public void onStopTrackingTouch(SeekBar arg0) 
                {


                }

                public void onStartTrackingTouch(SeekBar arg0) {


                }

                public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) 
                {
                    sb.setMax(100);
                    ShakeSilent.this.setTitle((sb.getMax()/sb.getProgress())*100);
                }
            });

誰かが私に適切な理由を教えてもらえますか?

4

2 に答える 2

0

たとえば、100/50は0.5に等しいですが、両方の値がintであるため、結果もintに変換されます。したがって、intに変換された0.5は0であり、0*100は0です。

あなたはそれを2倍にキャストする必要があります:

ShakeSilent.this.setTitle((sb.getMax()/(double)sb.getProgress())* 100);

于 2012-11-05T14:02:53.737 に答える
0

メソッドでは、sbの代わりにarg0を使用する必要があります。

ShakeSilent.this.setTitle((((float)arg0.getMax()/(float)arg0.getProgress()))*100);
于 2016-07-27T14:24:47.037 に答える