Я использую Хронометр в одном из фрагментов BottomNavigationView Хронометр работает нормально, но когда я выбираю другой фрагмент, он перезапускается с 00:00.
есть ли в любом случае, если я выберу другой фрагмент и вернусь к timer_fragment, а показ таймера продолжится?
Timer_Frag
private Runnable runnable = new Runnable() {
public void run() {
//
// Do the stuff
if (!resume) {
cmTimer.setBase(SystemClock.elapsedRealtime());
cmTimer.start();
} else {
cmTimer.start();
}
//
cmTimer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener()
{
@Override
public void onChronometerTick(Chronometer chronometer)
{
try
{
if (!resume){
long minutes = ((SystemClock.elapsedRealtime() - cmTimer.getBase())/1000) / 60;
long seconds = ((SystemClock.elapsedRealtime() - cmTimer.getBase())/1000) % 60;
elapsedTime = SystemClock.elapsedRealtime();
Log.d(TAG, "onChronometerTick: " + minutes + " : " + seconds);
}
else {
long minutes = ((elapsedTime - cmTimer.getBase())/1000) / 60;
long seconds = ((elapsedTime - cmTimer.getBase())/1000) % 60;
elapsedTime = elapsedTime + 1000;
Log.d(TAG, "onChronometerTick: " + minutes + " : " + seconds);
}
}catch (Exception e)
{
e.printStackTrace();
}
}
});
// handler.postDelayed(this, 1000);
}
};
@OnClick(R.id.btnstart)
void startTimer(){
btnStart.setEnabled(false);
runnable.run();
}
Спасибо...!!!
@ArbenMaloku, пожалуйста, уточните свой ответ еще немного ....?




Вот пример на котлине.
class HomeActivity : AppCompatActivity() {
private var mFragment1: Fragment1? = null
private var mFragment2: Fragment2? = null
.
.
.
private fun initialize() {
bottomNavigationView.setOnNavigationItemSelectedListener {
when (it.itemId) {
R.id.navigation_fragment_1 -> {
if (mFragment1 == null) {
mFragment1 = Fragment1.newInstance()
addFragment(mFragment1, R.id.frameLayout, false)
} else {
showFragment(mFragment1)
hideFragment(mFragment2)
}
}
R.id.navigation_fragment_1 -> {
if (mFragment2 == null) {
mFragment2 = Fragment2.newInstance()
addFragment(mFragment2, R.id.frameLayout, false)
} else {
hideFragment(mFragment1)
showFragment(mFragment2)
}
}
}
true
}
mFragment1 = Fragment1.newInstance()
addFragment(mFragment1, R.id.frameLayout, false)
}
}
fun AppCompatActivity.hideFragment(fragment: Fragment?) {
if (fragment != null)
supportFragmentManager.beginTransaction()
.hide(fragment)
.commit()
}
fun AppCompatActivity.showFragment(fragment: Fragment?) {
if (fragment != null)
supportFragmentManager.beginTransaction()
.show(fragment)
.commit()
}
Спасибо за ответ !! Но проблема все еще не решена :)
Решением было бы сохранять ссылку на фрагмент, а не создавать ее каждый раз. Затем вы можете показать / скрыть фрагмент в зависимости от позиции выбранной вкладки (BottomView).