我有一个使用片段和viewpager的android项目 我正在为每个页面使用单独的倒数计时器,该计时器仅在页面视图位于屏幕上时运行。首先,每个页面的时间是相同的,但过了一会儿,页面1可能还剩20秒,第2页60秒,依此类推。
我的问题是,当用户滑动到下一页时,我不知道如何节省剩余时间。我正在使用具有以下代码的onpagestatelistener,但这会保存questionId的新值和新时间的旧值。如何在用户刷卡之前引用questionId的值和页面中匹配的newtime-value?
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_DRAGGING) {
saveTime();
}
}
public void onPageScrolled(int position, float arg1, int arg2) {}
public void onPageSelected(int pos) {
questionId = mQuestions.get(pos).getNr()
runTime();
}
});
public void saveTime(){
mQuestions.get(questionId).setTime(newTime);
}
public void runTime(){
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
mTimer = new CountDownTimer(90000, 1000) {//MillisInFuture, countDownInterval
public void onTick(long millisUntilFinished) {
newTime = (millisUntilFinished/1000);
}
public void onFinish() {
}
}.start();
}
答案 0 :(得分:0)
首先,您可以使用SharedPreferences
。
此外,当然您可以将数据保存在用于ViewPager的适配器中,您可以将这些数据保存在DB中或在父Activity或Fragment中创建一些singleInstance。