How to Navigate through fragments in Android Kotlin

 How to Navigate through fragments in Android Kotlin

Just follow the following steps and you can easily do this. First of all, you need to add the following to the Gradle files.
 
implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
implementation "androidx.navigation:navigation-ui-ktx:2.3.5"
If there is some issue when trying to build then add the following


configurations.all {
resolutionStrategy { force 'androidx.core:core-ktx:1.6.0' }
}

plugins {
id 'com.android.application'
id 'kotlin-android'

}

android {
compileSdk 30

defaultConfig {
configurations.all {
resolutionStrategy { force 'androidx.core:core-ktx:1.6.0' }
}
applicationId "com.shyptsolution.navfrag"
minSdk 23
targetSdk 30
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}

dependencies {
implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
implementation "androidx.navigation:navigation-ui-ktx:2.3.5"
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}


Then 
Make you fragments and do the following changes in the main activity XML files like adding a fragment container and then adding the following codes
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<androidx.fragment.app.FragmentContainerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="androidx.navigation.fragment.NavHostFragment"
android:id="@+id/nav_host"
app:defaultNavHost="true"
app:navGraph="@navigation/my_nav"
/>

</androidx.constraintlayout.widget.ConstraintLayout>

Then make navigation android resource file as shown below





Then link your fragments as shown below from the resource manager 









Then add the functioning of the button as you want to change the fragments on buttons click

package com.shyptsolution.navfrag

import android.os.Bundle
import android.view.View
import android.widget.Button
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController

class HomeFragment:Fragment(R.layout.home_frag) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val button=view.findViewById<Button>(R.id.button)
button.setOnClickListener {
findNavController().navigate(R.id.action_homeFragment_to_secFrag)

}
}
}

Now just enjoy

Post a Comment

0 Comments