2016-05-13 5 views
1

сбросить значение хронометра при изменении ориентации, написал верно, но не помогает, обратитесь за помощью, что пошло не такхронометр перезапустит ориентации изменения

@Override 
protected void onSaveInstanceState(Bundle outState) { 
timer = SystemClock.elapsedRealtime() - chronometer.getBase(); 
outState.putLong("timerValue", timer); 
super.onSaveInstanceState(outState); 
} 

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.details_layout); 

chronometer = (Chronometer) findViewById(R.id.chronometer); 
chronometer.setBase(SystemClock.elapsedRealtime()); 
if (savedInstanceState != null) { 
    chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { 
     public void onChronometerTick(Chronometer chronometer) { 
      timer = savedInstanceState.getLong("timerValue"); 
      chronometer.setText(DateFormat.format("mm:ss", timer)); 
     } 
    }); 
    chronometer.start(); 
} else { 
    chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { 
     public void onChronometerTick(Chronometer chronometer) { 
      timer = SystemClock.elapsedRealtime() - chronometer.getBase(); 
      chronometer.setText(DateFormat.format("mm:ss", timer)); 
     } 
    }); 
    chronometer.start(); 
} 
} 

ответ

0

Внимание: Ваша деятельность будет уничтожена и воссоздается каждый раз, когда пользователь поворачивает экран. Когда экран меняет ориентацию, система уничтожает и воссоздает активность переднего плана, потому что конфигурация экрана изменилась, и для вашей активности может потребоваться загрузить альтернативные ресурсы (например, макет).

См: How to contain value of android chronometer with change in orientation

+0

Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (// meta.stackoverflow.com/q/8259), чтобы включить основные части ответа здесь, и обеспечить ссылка для справки. – manetsus