2013-03-31 3 views
0

Мой вопрос довольно прост, но я не могу с ним справиться. У меня есть поле хронометра в моем дизайне.Android. Сохранить и восстановить значение хронометра (реверсивный экран)

Я хочу, чтобы сохранить их во избежание потерянное значения времени с помощью возврата к экрану (воссоздать новый вид деятельности)

я использую для сохранения

public Object onRetainConfigurationInstance(){ 
    return timeSeconds; 
} 

И для восстановления timeSeconds = (Chronometer) getLastNonConfigurationInstance();

Но это Безразлично Не работай. Может ли кто-нибудь мне помочь? Какой параметр я должен сохранить для восстановления времени хронометра?

+0

'Но это не work.' Это ничего не говорит нам. * Точно * что происходит? Откуда вы знаете, что timeSeconds не является правильным значением? – Simon

+0

Просто начинает отсчет по началу) – user2105282

ответ

2
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); 
} 
1

Вы, вероятно, следует использовать 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() 
} 
+0

Егор, спасибо за помощь. Он работает с некоторыми изменениями. Возможно, это будет полезно для начинающих. – user2105282

+0

@ user2105282, Добро пожаловать! Пожалуйста, примите ответ, если вы сочтете это полезным. – Egor