Skip to main content

Controlling Back button Behavior in Fragment-- kotlin

when user navigates in an application android maintains back stack of destinations . This allows android to go back to previous destination when user clicks back button . some times we need to implement our own back button behavior for best user experience . For example if we are in a timer based quiz application . when the user clicks on the back button if we go back to the previous destination without stopping the counter , it will crash the application . So first we need to know whether the user pressed the back button accidentally or not by using a dialogue box . If the user want to go back to previous destination we need to stop the counter and  then go back to the previous destination.

We can control the back button hahavior byusing OnBackPressedDispatcher . This controls how back button events are dispatched to one or more onBackPressedCallback objects . callbacks are added using addCallback methods. exampe code is given below

val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {

            if(((findNavController().currentDestination?.id)==R.id.qaFragment)){

               val builder = AlertDialog.Builder(context)
               builder.setMessage("do you want to exit ?")
                   .setPositiveButton("yes",
                       DialogInterface.OnClickListener { dialog, which ->
                           couuntDown.cancel()
                           findNavController().navigateUp()
                       })
                   .setNegativeButton("no", null)
               builder.show()

           }
            else{

               findNavController().navigateUp()
           }
        }
our application consists of many fragments , we only want to control the back button behavior of a single fragment. We find the particular fragment 
if(((findNavController().currentDestination?.id)==R.id.qaFragment)){
When the user click on the back Button in the qaFaragment , we show a conformation dialogue box asking "do you want to exit ?" . If the user clicks yes then we will stop the timer and go back to the previous destination.

you can download the full source code of this app from my Github

Comments

Popular posts

Simple Calculator in Android

You can view new updated simple calculator with ViemModel and LiveData in my new blog    https://androidtuts4u.blogspot.com/2021/10/simple-calculator-with-viewmodel-and.html To create a calculator first  we need to create the layout of the calculator. Layout  is created  using XML file given below <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent" >  <EditText     android:id="@+id/result_id"       android:layout_width="fill_parent"     android:layout_height="120dp"   />  <Button    android:id="@+id/Btn7_id"      android:layout_width="70dp"    android:layout_height="60dp"    android:layout_below="@id/result_id"   ...

Android External database : Using database in "assets" folder

The best way to create a database application in android is , using an exteranal database . ie, we can create database  using tools like N avicat  , SQLite Browser  and copy this database into our application .This  method is more flexible and easy than creating a database in our application . This is a simple application using external database file.Application will insert data into database and show data from the database in a customized list view.  Screenshots of this application are MainActivity This is the first activity of this application . When  Register Here button is pressed it will start Registration Activity Editing of the entries can be done with a Long Click on the listView items. you can download the source code of this project from  google drive  https://drive.google.com/folderview?id=0BySLpWhqmbbdY3JHMkZRZFN0bEE&usp=sharing click on the above link ->sign into  your  google account ->a...

Swipe or OnFling Event Android

This  is a simple application Demonstrating Swipe or onFling() event on ListView. you can download the source code of this project from  google drive   https://drive.google.com/folderview?id=0BySLpWhqmbbdSVB4M0hXb0VxcU0&usp=sharing click on the above link ->sign into  your  google account ->add this to your google drive -> open it in google drive and download it. 1. Following is the MainActivity (DemoSwipe.java) of the application package com.arun.demolistviewswipe; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class DemoSwipe extends Activity { ListView lvCountry; Strin...