dotnet / android

.NET for Android provides open-source bindings of the Android SDK for use with .NET managed languages such as C#
MIT License
1.94k stars 533 forks source link

Menu Deprecations #611 - Resolution #7810

Closed gmck closed 1 year ago

gmck commented 1 year ago

Android application type

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

Affected platform version

VS 2022 17.5.0 Prev 6.0

Description

@jonpryor

Menu deprecations Issue #611. Reported here Sept 6 2022 - OnPrepareMenu, OnMenuClosed missing etc.

On Dec 8th 2022 in #611 you asked @jpobst and @moljac “do our AndroidX and GooglePlayServicesComponents/etc. bindings enable interface default method binding and all the other new binding features Java.Interop supports?”

There was no answer here at least and now #611 has petered out with a notice at the end This issue is being transferred. Timeline may not be complete until it finishes. Could you explain what that notice means?

Could you also indicate where we are at with this issue? We are now about halfway through the Android 13 lifecycle and we still don’t have fixes for these menu problems.

This effectively means to produce a clean build for Android 13, We have to use AppCompat 1.4.2.1, Navigation.Fragment and Navigation.UI 2.4.2.1, either that or put up with 90 odd deprecation warnings for all the fragments and provide our own OnPrepareMenu.

After converting several test projects I’m keen to convert this project to net7.0-android, but I’m not in a position to start on it until we have some resolution to this problem.

Your Discord conversation with @jpobst Dec 8th 2022 didn’t sound all that promising for a resolution to this problem as he referred to no, they're tied to static interface methods, enabling them would cause api breaks: And again that conversation petered out as well with your remark sounds like we need a generator feature.

His link referred to “Opt out of C#8 features to maintain compatibility with legacy”. Could you explain what that exactly means? If legacy means old devices as in android 7-8 etc couldn’t we just opt out of supporting old devices? I’d be prepared to restrict my minimum Android Version to Android 10 (Api 29) as my users don’t use old devices. Just keeping those old devices charged to test with is bad enough, let alone actually using them.

Steps to Reproduce

Described in #611

Did you find any workaround?

No response

Relevant log output

No response

jpobst commented 1 year ago

https://github.com/xamarin/AndroidX/issues/611 has been resolved, so I think this issue is complete.