Fragment

What is fragment and why we use fragment?

First lets see what is fragment?

Fragment can be called as part of activity or may be ‘’sub activity’’ the fragments lifecycle depends on the activity lifecycle since the fragments are included inside the activity. It represent the reusable portion of the app UI.

Fragment Lifecycle

Lets see the lifecycle of fragment

onAttach() → It will be called for the first time when the fragment get attached to the activity.

onCreate() → It take care of initialization of fragment.

onCreateView() → Here the view will be created and returned

onActivityCreated() → It will be called at the time of activity oncreate() method gets executed.

onStart() → It will called whenever the fragment gets visible to user

onResume() → When the fragment gets interactive with user.

onPause() → When the fragment is not visible to user.

onStop() →When the fragment is no longer interactive with user

onDestroyView() → clean up fragment oriented resource

onDestroy() → we can do our final clean up

onDetach() → where fragment is no longer attached to activity

why we use fragment?

For reusable UI its good to use fragment so we can call if we need the same screen some where in activity

Example for fragment

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment

class Frgment1 : Fragment() {

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment1,container,false)
}
}

We created a empty fragment with just a layout call

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import androidx.fragment.app.Fragment

class MainActivity : AppCompatActivity() {
var fraggment1:TextView ?= null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fraggment1 = findViewById(R.id.fraggment1)
fraggment1!!.setOnClickListener {loadfragmet(Frgment1()) }
}

fun loadfragmet(fragment:Fragment)
{
supportFragmentManager
.beginTransaction()
.replace(R.layout.frame,fragment)
.commit()
}
}

And from the MainActivity we called the fragment by loadfragmet method it will replace the current fragment