【问题标题】:Android. Save and reestablish value of chronometer (reversing screen)安卓。保存并重新建立计时器的值(反转屏幕)
【发布时间】:2013-04-18 00:55:57
【问题描述】:

我的问题很简单,但我无法应付他。 我的设计中有计时器字段。

我想通过还原屏幕(重新创建新活动)来保存它们以避免失去时间价值

我用来保存

    public Object onRetainConfigurationInstance(){
    return timeSeconds;
}

为了重新建立timeSeconds = (Chronometer) getLastNonConfigurationInstance();

但它不起作用。有人可以帮我吗?我必须保存哪些参数才能重新建立计时器时间?

【问题讨论】:

  • But it doesn't work. 这什么也没告诉我们。 正是会发生什么?你怎么知道 timeSeconds 不是正确的值?
  • 只是从头算起)

标签: android chronometer


【解决方案1】:
protected void onSaveInstanceState(Bundle outState) {
    outState.putLong(TIME_KEY, timeSeconds.getBase());
    super.onSaveInstanceState(outState);
}

protected void onRestoreInstanceState(Bundle savedInstanceState){
    if((savedInstanceState !=null)
            && savedInstanceState.containsKey(TIME_KEY)){
        timeSeconds.setBase(savedInstanceState.getLong(TIME_KEY));
    }
    super.onRestoreInstanceState(savedInstanceState);
}

【讨论】:

    【解决方案2】:

    您可能应该使用onSaveInstanceState() 在方向更改之间保存数据,您的代码可能如下所示:

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putLong("time_seconds", timeSeconds);
        super.onSaveInstanceState(outState);
    }
    

    然后您可以在onCreate() 中获取存储值,这被称为Activity 在方向更改时重新创建:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        long timeSeconds = savedInstanceState.getLong("time_seconds");
        // other code from onCreate()
    }
    

    【讨论】:

    • 叶戈尔,感谢您的帮助。它适用于一些修改。也许它对一些初学者会有用。
    • @user2105282,不客气!如果您觉得它有帮助,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2023-04-04
    • 2011-06-28
    • 2017-03-24
    相关资源
    最近更新 更多