-1

I'm using Chronometer in one of the fragment of BottomNavigationView Chronometer works fine but when i select another fragment it restart from 00:00

is there anyway if i select another fragment and come back to timer_fragment and the timer show continues time ?

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();

    }

Thanks...!!!

Saikrishna Rajaraman
  • 3,205
  • 2
  • 16
  • 29
Rahul Bh
  • 123
  • 2
  • 15
  • A solution would be to save fragment reference, not creating it every time. Then you can show/hide fragment based on selected tab (BottomView) position. – ArbenMaloku Sep 17 '18 at 08:35
  • @ArbenMaloku will you please elaborate your answer little more ....? – Rahul Bh Sep 17 '18 at 08:39

1 Answers1

0

Here is an example in kotlin.

    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()
}
ArbenMaloku
  • 548
  • 4
  • 15