I am using navigation-components in my android project.I have enabled Gradle's type safe args plugin here is my build.gradle(app) file.
apply plugin: 'com.android.application'
apply plugin: "androidx.navigation.safeargs"
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.nibotransporti"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
dataBinding.enabled = true
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
};
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.legacy:legacy-support-core-utils:1.0.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.lifecycle:lifecycle-livedata:2.2.0"
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.google.firebase:firebase-auth:19.3.0'
implementation 'com.google.firebase:firebase-analytics:17.2.3'
implementation 'com.google.firebase:firebase-database:19.2.1'
implementation 'com.google.firebase:firebase-firestore:21.4.1'
implementation 'com.google.android.material:material:1.1.0'
implementation 'de.hdodenhof:circleimageview:3.1.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
implementation 'com.robertlevonyan.view:CustomFloatingActionButton:3.0.0'
implementation 'com.shuhart.stepview:stepview:1.5.1'
implementation 'com.alespero:expandable-cardview:0.8'
implementation 'com.anton46:stepsview:0.0.2'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.google.guava:guava:27.0.1-android'
implementation 'com.kofigyan.stateprogressbar:stateprogressbar:1.0.0'
implementation 'androidx.navigation:navigation-fragment:2.2.1'
implementation 'androidx.navigation:navigation-ui:2.2.1'
implementation "androidx.fragment:fragment:1.3.0-alpha01"
}
and my build.gradle(project) file.
buildscript {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
classpath 'com.google.gms:google-services:4.3.3'
def nav_version = "2.3.0-alpha03"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
My navigation graph xml code is here as.
<?xml version="1.0" encoding="utf-8"?> <br/>
<navigation 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:id="@+id/nav_graph"
app:startDestination="@id/signInFragment">
<fragment
android:id="@+id/signInFragment"
android:name="com.example.nibotransporti.Fragment.SignInFragment"
android:label="fragment_sign_in"
tools:layout="@layout/fragment_sign_in" >
<action
android:id="@+id/action_registration"
app:destination="@id/signUpFragment">
<argument
android:name="email"
android:defaultValue="3"
app:argType="string" />
</action>
<action
android:id="@+id/action_signInFragment_to_workerAnalyticsFragment"
app:destination="@id/workerAnalyticsFragment" />
</fragment>
<fragment
android:id="@+id/signUpFragment"
android:name="com.example.nibotransporti.Fragment.SignUpFragment"
android:label="fragment_sign_up"
tools:layout="@layout/fragment_sign_up">
<action
android:id="@+id/action_signUpFragment_to_signInFragment"
app:destination="@id/signInFragment">
<argument
android:name="email"
android:defaultValue="ten"
app:argType="string" />
<argument
android:name="password"
android:defaultValue="wen"
app:argType="string" />
</action>
</fragment>
<fragment
android:id="@+id/workerAnalyticsFragment"
android:name="com.example.nibotransporti.Fragment.WorkerAnalyticsFragment"
android:label="WorkerAnalyticsFragment"
tools:layout="@layout/fragment_woker_analytics"/>
<fragment
android:id="@+id/reportFragment"
android:name="com.example.nibotransporti.Fragment.ReportFragment"
android:label="fragment_stock"
tools:layout="@layout/fragment_stock" />
</navigation>
Even after several attempts of building the project,the args class for the destination fragment are not creating.
Here is my code of the fragment in which the action is originating (SignUpFragment)
SignUpFragmentDirections.ActionSignUpFragmentToSignInFragment action =
SignUpFragmentDirections.actionSignUpFragmentToSignInFragment();
action.setEmail(email);
action.setPassword(password);
And here is the destination code of the fragment (SignInFragment) where i want to access those args . email & password.
SignInFragmentArgs.getArguments().getString()
//Set up the navigation for the appropriate action
Navigation.findNavController(v).navigate(action);
According to the official documentation the SignInFragmentArgs code should be generated during building the project but it is not and i am in a serious trouble because i want to access those passed arguments email and password from SignUpFragment but i cannot find SignInFragmentArgs class which means that it is not generated during building.
Anyone here please i need the solution.
Your <argument>
elements need to be on the <fragment>
classes, not on the <action>
elements - arguments on actions only provide override values for the arguments already on the destination they point to.
<?xml version="1.0" encoding="utf-8"?>
<navigation 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:id="@+id/nav_graph"
app:startDestination="@id/signInFragment">
<fragment
android:id="@+id/signInFragment"
android:name="com.example.nibotransporti.Fragment.SignInFragment"
android:label="fragment_sign_in"
tools:layout="@layout/fragment_sign_in" >
<argument
android:name="email"
android:defaultValue="ten"
app:argType="string" />
<argument
android:name="password"
android:defaultValue="wen"
app:argType="string" />
<action
android:id="@+id/action_registration"
app:destination="@id/signUpFragment" />
<action
android:id="@+id/action_signInFragment_to_workerAnalyticsFragment"
app:destination="@id/workerAnalyticsFragment" />
</fragment>
<fragment
android:id="@+id/signUpFragment"
android:name="com.example.nibotransporti.Fragment.SignUpFragment"
android:label="fragment_sign_up"
tools:layout="@layout/fragment_sign_up">
<argument
android:name="email"
android:defaultValue="3"
app:argType="string" />
<action
android:id="@+id/action_signUpFragment_to_signInFragment"
app:destination="@id/signInFragment" />
</fragment>
<fragment
android:id="@+id/workerAnalyticsFragment"
android:name="com.example.nibotransporti.Fragment.WorkerAnalyticsFragment"
android:label="WorkerAnalyticsFragment"
tools:layout="@layout/fragment_woker_analytics"/>
<fragment
android:id="@+id/reportFragment"
android:name="com.example.nibotransporti.Fragment.ReportFragment"
android:label="fragment_stock"
tools:layout="@layout/fragment_stock" />
</navigation>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With