问题描述
我正在尝试制作一个进度条,我可以在其中增加/重置值,到目前为止我已经这样做了,但是我希望能够以某种方式保存离开应用程序后离开的状态,我需要进度条的百分比保持不变,即使我退出它,我已经阅读了一些关于恢复方法和共享首选项的内容,但我真的不知道如何去做并将其应用于我自己的代码,任何帮助都会非常感谢,这是我的活动代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import me.itangqi.waveloadingview.WaveLoadingView;
public class MainActivity extends AppCompatActivity {
WaveLoadingView waveLoadingView;
SeekBar seekBar;
Button increase,restart;
private int prog = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar=findViewById(R.id.seekbar);
waveLoadingView=findViewById(R.id.waveloading);
waveLoadingView.setProgressValue(0);
increase=findViewById(R.id.increase);
restart=findViewById(R.id.restart);
increase.setonClickListener(v -> {
if(prog<=100){
prog+=10;
updateProgressBar();
}
if(prog<50){
waveLoadingView.setBottomTitle(String.format("%d%%",prog)+"you're drinking too little");
waveLoadingView.setCenterTitle("");
waveLoadingView.setTopTitle("");
}else if(prog<80){
waveLoadingView.setBottomTitle("");
waveLoadingView.setCenterTitle(String.format("%d%%",prog)+"You Are Almost There!");
waveLoadingView.setTopTitle("");
}else{
waveLoadingView.setBottomTitle("");
waveLoadingView.setCenterTitle("");
waveLoadingView.setTopTitle(String.format("%d%%",prog)+"\r\n You've Made It!");
}
if(prog==110){
waveLoadingView.setProgressValue(0);
}
});
restart.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
waveLoadingView.setProgressValue(0);
waveLoadingView.setBottomTitle("");
waveLoadingView.setCenterTitle("");
waveLoadingView.setTopTitle("");
prog=0;
}
});
}
private void updateProgressBar() {
waveLoadingView.setProgressValue(prog);
}
}
解决方法
使用共享首选项文件保存该值,您可以在重新打开应用程序时读取该值。
private void updateProgressBar() { waveLoadingView.setProgressValue(prog); getSharedPreferences("nameyourfile",MODE_PRIVATE)。编辑()。 putInt("progress',prog). apply() ; }
在恢复 int prog = getSharedPreferences("nameyourfile",MODE_PRIVATE).getInt("progress',yourdefaultvalueprogress); updateProgressBar(prog) ;