dotnet / dotnet/android-libraries

No @Navigator.Name annotation found

Open
#735 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
317
Forks
73
Avg merge
1d 8h
Merged PRs (30d)
17

Description

### Android application type

Classic Xamarin.Android (MonoAndroid12.0, etc.)

### Affected platform version

Visual Studio Community 2022 for Mac Version 17.4.4, Xamarin.Android 13.1.0.1

### Description

I try to create custom AndroidX.Navigation.Navigator. My CustomFragmentNavigator implements IName:

public class CustomFragmentNavigator : AndroidX.Navigation.Navigator, AndroidX.Navigation.Navigator.IName
{
public string Value()
{
return "customFragment";
}

public Class AnnotationType()
{
return Class;
}

...
}

Also I create CustomNavHostFragment:

public class CustomNavHostFragment : AndroidX.Navigation.Fragment.NavHostFragment
{
protected override void OnCreateNavHostController(NavHostController navHostController)
{
base.OnCreateNavHostController(navHostController);

var navigator = new CustomFragmentNavigator(RequireContext(), ChildFragmentManager, GetContainerId());
navHostController.NavigatorProvider.AddNavigator(navigator);
}

int GetContainerId()
{
if (Id > 0)
return Id;

return Resource.Id.nav_host_fragment_container;
}
}

When executing Java.Lang.IllegalArgumentException has been thrown (No @Navigator.Name annotation found for CustomFragmentNavigator).

What is analog of attribute @Navigator.Name("customFragment") in Xamarin?

### Steps to Reproduce

1. Create custom AndroidX.Navigation.Navigator
2. Create custom AndroidX.Navigation.Fragment.NavHostFragment and add navigator from previous step
3. Use custom NavHostFragment in layout

### Did you find any workaround?

_No response_

### Relevant log output

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.