Java 当Progressbar达到最大值时,如何重置Progressbar并为其提供新值?

Java 当Progressbar达到最大值时,如何重置Progressbar并为其提供新值?,java,android,progress-bar,Java,Android,Progress Bar,我正在做一个点击游戏,你点击一个按钮来增加你的能量。 当我的Progressbar达到最大值时,它会重置并将最大值设置为下一个更高的值(一切正常)。 但当我再次点击时,进度会增加原来的最大值,但之后它会正常继续。 我不知道怎么解决这个问题 public class MainActivity extends AppCompatActivity { public int MinPoints = 0; public int MaxPointsSSJ = 10; public

我正在做一个点击游戏,你点击一个按钮来增加你的能量。 当我的Progressbar达到最大值时,它会重置并将最大值设置为下一个更高的值(一切正常)。 但当我再次点击时,进度会增加原来的最大值,但之后它会正常继续。 我不知道怎么解决这个问题

public class MainActivity extends AppCompatActivity {

    public int MinPoints = 0;
    public int MaxPointsSSJ = 10;
    public int MaxPointsSSJ2 = 20;
    public int MaxPointsSSJ3 = 50;
    public int Progress;

    private void checker(int currentPoints, int maxPoints, int
newmaxPoints, ImageView anzeige, int bild, ProgressBar pb){
        if (currentPoints == maxPoints)
            maxPoints = newmaxPoints;
            pb.setMax(newmaxPoints);
            anzeige.setImageResource(bild);
            pb.setProgress(currentPoints - maxPoints);
            }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ImageView Anzeige = (ImageView) findViewById(R.id.imageView);
        final ProgressBar KiAnzeige = (ProgressBar) findViewById  (R.id.progressBar);
        Button MehrEnergie = (Button) findViewById(R.id.button);

    KiAnzeige.setMax(MaxPointsSSJ);
    KiAnzeige.setMin(MinPoints);
    KiAnzeige.setProgress(0);
    Progress = KiAnzeige.getProgress();

    MehrEnergie.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Progress++;
            KiAnzeige.setProgress(Progress);
            if (Progress == MaxPointsSSJ){
                checker(Progress, MaxPointsSSJ, MaxPointsSSJ2, Anzeige, R.drawable.goku_ssj1, KiAnzeige);
            }
        if (Progress == MaxPointsSSJ2){
            checker(Progress, MaxPointsSSJ2, MaxPointsSSJ3, Anzeige, R.drawable.goku_ssj2, KiAnzeige);
        }
        }
    });
}
}试试这个

MehrEnergie.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ++Progress;
            KiAnzeige.setProgress(Progress);
            if (Progress == MaxPointsSSJ){
                checker(Progress, MaxPointsSSJ, MaxPointsSSJ2, Anzeige, R.drawable.goku_ssj1, KiAnzeige);
            }
        if (Progress == MaxPointsSSJ2){
            checker(Progress, MaxPointsSSJ2, MaxPointsSSJ3, Anzeige, R.drawable.goku_ssj2, KiAnzeige);
        }
        }
    });

将progressbar设置为InDeminate状态,使其显示无限进度

KiAnzeige.setIndeterminate(true);

您的
OnClick
函数将进度条进度增加1,但在
checker
函数中,您将进度条进度设置为0,因为currentPoints等于maxPoints

所以在
OnClick
中,它看起来像1/10,2/10,3/10。。。10/10,然后触发
checker
,将其设置为0/20,然后返回到
OnClick
,继续11/20、12/20、13/20。。。等等

您可以通过将最大值更改为新最大值和旧最大值之间的差值,然后将进度设置回0,或者在设置进度时考虑差值来解决此问题


或者,如果您希望进度条“加宽”,以便仍然显示以前的单击,但进度条的比例增加,您可以在
checker
功能中将进度设置为
currentPoints

可以尝试创建一个新的进度条实例