【问题标题】:Progress Bar Resets when Flipping the Device翻转设备时进度条重置
【发布时间】:2014-11-03 03:24:51
【问题描述】:

我有一个小问题,这可能不是最难解决的,到目前为止我找不到任何东西:

在我的应用程序中,我使用了一个连接到CountDownTimer 的进度条。当我翻转设备时,进度条会重置为 0,而计时器不会,这会导致时间到了,而进度条仍在中间的某个位置。我为纵向/横向使用了两种不同的布局文件,但进度条的定义没有区别。

这是java代码:

mCountDownTimer=new CountDownTimer(6000,50) {

            @Override
            public void onTick(long millisUntilFinished) {
                Log.v("Log_tag", "Tick of Progress"+ i + millisUntilFinished);
                i++;
                mProgressBar.setProgress(i);

            }

            @Override
            public void onFinish() {
                i++;
                mProgressBar.setProgress(i);
                Toast toast = Toast.makeText(getApplicationContext(), "Time Up!", Toast.LENGTH_SHORT);
                toast.show();
                if(counter < DBAdapter.NUMBER_OF_QUESTIONS){
                    i=0;
                    newQuestion();
                }
                else endGame();
            }
        };

这是xml代码:

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:max="120"
    android:progress="0"
    android:visibility="visible" />

感谢您的帮助!

【问题讨论】:

    标签: android android-activity progress-bar


    【解决方案1】:

    请注意,当发生翻转时,您的 Activity 会被销毁并重新创建。因此,局部变量中的值会丢失。

    为避免丢失此类值,请使用onSaveInstanceState()onRestoreInstanceState() 存储进度值并将其取回。

    例子,

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("PROGRESS VALUE", i);
    }
    
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        i = savedInstanceState.getInt("PROGRESS VALUE");
    }
    

    你可以在这里阅读更多相关信息,

    http://developer.android.com/training/basics/activity-lifecycle/recreating.html

    您可以在此处了解更多信息。

    http://www.youtube.com/watch?v=2VYlTgaAHTs&list=PLlxmoA0rQ-LyCGSSD_nuPAmXDSR_FU0RR&index=31

    http://www.youtube.com/watch?v=7XqHvJK9xn4&list=PLlxmoA0rQ-LyCGSSD_nuPAmXDSR_FU0RR&index=32

    http://www.youtube.com/watch?v=4LYhbQXu19U&list=PLlxmoA0rQ-LyCGSSD_nuPAmXDSR_FU0RR&index=33

    http://www.youtube.com/watch?v=W3NsvUX_Fwo&list=PLlxmoA0rQ-LyCGSSD_nuPAmXDSR_FU0RR&index=34

    希望对你有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2014-04-23
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      相关资源
      最近更新 更多