Open shirishavanquis opened 1 year ago
Can anyone please help on this.
@jsuarezruiz could you please help on this.
any update on this?
mistakenly clicked on close. any update on this?
I have a similar issue with a SearchBarRenderer:
Here is the renderer code:
using System.ComponentModel;
using Android.Content;
using AViews = Android.Views;
using Android.Widget;
using Microsoft.Maui.Controls.Compatibility.Platform.Android;
using Microsoft.Maui.Controls.Handlers.Compatibility;
using Microsoft.Maui.Controls.Platform.Compatibility;
using Microsoft.Maui.Controls.Platform;
using Microsoft.Maui.Platform;
namespace MyApp.Platforms.Android.Renderers
{
public class CustomSearchBarRenderer: SearchBarRenderer
{
public CustomSearchBarRenderer(Context context) : base(context)
{
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
}
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
var searchView = Control as AndroidX.AppCompat.Widget.SearchView;
if (searchView != null)
{
searchView.Background = Context.GetDrawable(Resource.Drawable.bg_white_rounded);
int searchIconId = Context.Resources.GetIdentifier("android:id/search_mag_icon", null, null);
ImageView searchViewIcon = (ImageView)searchView.FindViewById<ImageView>(searchIconId);
searchViewIcon.Visibility = AViews.ViewStates.Gone;
searchViewIcon.SetImageDrawable(null);
int plateId = searchView.Context.Resources.GetIdentifier("android:id/search_plate", null, null);
var plate = (searchView.FindViewById(plateId) as AViews.View);
plate.SetBackgroundColor(Colors.Transparent.ToPlatform());
}
}
}
}
And here is hte exception:
[mono-rt] [ERROR] FATAL UNHANDLED EXCEPTION: Android.Views.InflateException: Binary XML file line #93 in com.example.myapp:layout/abc_search_view: Binary XML file line #93 in com.example.myapp:layout/abc_search_view: Error inflating class <unknown>
[mono-rt] ---> Android.Views.InflateException: Binary XML file line #93 in com.example.myapp:layout/abc_search_view: Error inflating class <unknown>
[mono-rt] ---> Java.Lang.Reflect.InvocationTargetException: Exception of type 'Java.Lang.Reflect.InvocationTargetException' was thrown.
[mono-rt] ---> Java.Lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f030393 a=-1}, theme={InheritanceMap=[id=0x7f110202com.example.myapp:style/Theme.AppCompat.Empty], Themes=[com.example.myapp:style/Theme.AppCompat.Empty, forced, android:style/Theme.DeviceDefault.Light.DarkActionBar, forced]}
[mono-rt]
[mono-rt] --- End of managed Java.Lang.UnsupportedOperationException stack trace ---
[mono-rt] java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f030393 a=-1}, theme={InheritanceMap=[id=0x7f110202com.example.myapp:style/Theme.AppCompat.Empty], Themes=[com.example.myapp:style/Theme.AppCompat.Empty, forced, android:style/Theme.DeviceDefault.Light.DarkActionBar, forced]}
[mono-rt] at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:1007)
[mono-rt] at android.content.res.TypedArray.getDrawable(TypedArray.java:991)
[mono-rt] at android.view.View.<init>(View.java:5579)
[mono-rt] at android.widget.ImageView.<init>(ImageView.java:196)
[mono-rt] at android.widget.ImageView.<init>(ImageView.java:191)
[mono-rt] at android.widget.ImageView.<init>(ImageView.java:187)
[mono-rt] at java.lang.reflect.Constructor.newInstance0(Native Method)
[mono-rt] at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
[mono-rt] at android.view.LayoutInflater.createView(LayoutInflater.java:858)
[mono-rt] at android.view.LayoutInflater.createView(LayoutInflater.java:780)
[mono-rt] at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
[mono-rt] at android.view.LayoutInflater.onCreateView(LayoutInflater.java:934)
[mono-rt] at android.view.LayoutInflater.onCreateView(LayoutInflater.java:954)
[mono-rt] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1008)
[mono-rt] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)
[mono-rt] at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)
[mono-rt] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
[mono-rt] at android.view.LayoutInflater.rInflate(LayoutInflater.java:1130)
[mono-rt] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
[mono-rt] at android.view.LayoutInflater.rInflate(LayoutInflater.java:1130)
[mono-rt] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
[mono-rt] at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
[mono-rt] at android.view.LayoutInflater.inflate(LayoutInflater.java:538)
[mono-rt] at androidx.appcompat.widget.SearchView.<init>(SearchView.java:290)
[mono-rt] at androidx.appcompat.widget.SearchView.<init>(SearchView.java:276)
[mono-rt] at androidx.appcompat.widget.SearchView.<init>(SearchView.java:272)
[mono-rt] at crc6452ffdc5b34af3a0f.ScopedFragment.n_onCreateView(Native Method)
[mono-rt] at crc6452ffdc5b34af3a0f.ScopedFragment.onCreateView(ScopedFragment.java:39)
[mono-rt] at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104)
[mono-rt] at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524)
[mono-rt] at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
[mono-rt] at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899)
[mono-rt] at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1823)
[mono-rt] at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1760)
[mono-rt] at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2985)
[mono-rt] at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:2888)
[mono-rt] at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3129)
[mono-rt] at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:552)
[mono-rt] at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
[mono-rt] at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899)
[mono-rt] at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1817)
[mono-rt] at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1760)
[mono-rt] at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:547)
[mono-rt] at android.os.Handler.handleCallback(Handler.java:942)
[mono-rt] at android.os.Handler.dispatchMessage(Handler.java:99)
[mono-rt] at android.os.Looper.loopOnce(Looper.java:201)
[mono-rt] at android.os.Looper.loop(Looper.java:288)
[mono-rt] at android.app.ActivityThread.main(ActivityThread.java:7872)
[mono-rt] at java.lang.reflect.Method.invoke(Native Method)
[mono-rt] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
[mono-rt] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
@bnoffer did u find any solution to your exception?
@shirishavanquis instead of
renderer = AndroidPlatform.CreateRendererWithContext(element, context);
if you call
element.ToPlatform(MauContext)
Does that work?
The KeyboardWrapperPageRenderer
should have a MauiContext
property you can use
@PureWeen where to add this element.ToPlatform(MauContext).
could you please tell how to modify this line renderer = AndroidPlatform.CreateRendererWithContext(element, context);
for reference, turn a MAUI element into a platform view , you can change
static IVisualElementRenderer GetRenderer(VisualElement element, Context context)
{
var renderer = AndroidPlatform.GetRenderer(element);
if (renderer == null)
{
renderer = AndroidPlatform.CreateRendererWithContext(element, context);
AndroidPlatform.SetRenderer(element, renderer);
}
return renderer;
}
to
View GetRenderer(VisualElement element) => element.ToPlatform(this.MauiContext)
Verified this issue with Visual Studio for mac 17.6.8 (build 400). Can repro on Android platforms with sample project. https://github.com/shirishavanquis/MAUIIssue.git
I have a similar issue with a SearchBarRenderer:
Here is the renderer code:
using System.ComponentModel; using Android.Content; using AViews = Android.Views; using Android.Widget; using Microsoft.Maui.Controls.Compatibility.Platform.Android; using Microsoft.Maui.Controls.Handlers.Compatibility; using Microsoft.Maui.Controls.Platform.Compatibility; using Microsoft.Maui.Controls.Platform; using Microsoft.Maui.Platform; namespace MyApp.Platforms.Android.Renderers { public class CustomSearchBarRenderer: SearchBarRenderer { public CustomSearchBarRenderer(Context context) : base(context) { } protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); } protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e) { base.OnElementChanged(e); var searchView = Control as AndroidX.AppCompat.Widget.SearchView; if (searchView != null) { searchView.Background = Context.GetDrawable(Resource.Drawable.bg_white_rounded); int searchIconId = Context.Resources.GetIdentifier("android:id/search_mag_icon", null, null); ImageView searchViewIcon = (ImageView)searchView.FindViewById<ImageView>(searchIconId); searchViewIcon.Visibility = AViews.ViewStates.Gone; searchViewIcon.SetImageDrawable(null); int plateId = searchView.Context.Resources.GetIdentifier("android:id/search_plate", null, null); var plate = (searchView.FindViewById(plateId) as AViews.View); plate.SetBackgroundColor(Colors.Transparent.ToPlatform()); } } } }
And here is hte exception:
[mono-rt] [ERROR] FATAL UNHANDLED EXCEPTION: Android.Views.InflateException: Binary XML file line #93 in com.example.myapp:layout/abc_search_view: Binary XML file line #93 in com.example.myapp:layout/abc_search_view: Error inflating class <unknown> [mono-rt] ---> Android.Views.InflateException: Binary XML file line #93 in com.example.myapp:layout/abc_search_view: Error inflating class <unknown> [mono-rt] ---> Java.Lang.Reflect.InvocationTargetException: Exception of type 'Java.Lang.Reflect.InvocationTargetException' was thrown. [mono-rt] ---> Java.Lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f030393 a=-1}, theme={InheritanceMap=[id=0x7f110202com.example.myapp:style/Theme.AppCompat.Empty], Themes=[com.example.myapp:style/Theme.AppCompat.Empty, forced, android:style/Theme.DeviceDefault.Light.DarkActionBar, forced]} [mono-rt] [mono-rt] --- End of managed Java.Lang.UnsupportedOperationException stack trace --- [mono-rt] java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f030393 a=-1}, theme={InheritanceMap=[id=0x7f110202com.example.myapp:style/Theme.AppCompat.Empty], Themes=[com.example.myapp:style/Theme.AppCompat.Empty, forced, android:style/Theme.DeviceDefault.Light.DarkActionBar, forced]} [mono-rt] at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:1007) [mono-rt] at android.content.res.TypedArray.getDrawable(TypedArray.java:991) [mono-rt] at android.view.View.<init>(View.java:5579) [mono-rt] at android.widget.ImageView.<init>(ImageView.java:196) [mono-rt] at android.widget.ImageView.<init>(ImageView.java:191) [mono-rt] at android.widget.ImageView.<init>(ImageView.java:187) [mono-rt] at java.lang.reflect.Constructor.newInstance0(Native Method) [mono-rt] at java.lang.reflect.Constructor.newInstance(Constructor.java:343) [mono-rt] at android.view.LayoutInflater.createView(LayoutInflater.java:858) [mono-rt] at android.view.LayoutInflater.createView(LayoutInflater.java:780) [mono-rt] at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) [mono-rt] at android.view.LayoutInflater.onCreateView(LayoutInflater.java:934) [mono-rt] at android.view.LayoutInflater.onCreateView(LayoutInflater.java:954) [mono-rt] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1008) [mono-rt] at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965) [mono-rt] at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127) [mono-rt] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088) [mono-rt] at android.view.LayoutInflater.rInflate(LayoutInflater.java:1130) [mono-rt] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088) [mono-rt] at android.view.LayoutInflater.rInflate(LayoutInflater.java:1130) [mono-rt] at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088) [mono-rt] at android.view.LayoutInflater.inflate(LayoutInflater.java:686) [mono-rt] at android.view.LayoutInflater.inflate(LayoutInflater.java:538) [mono-rt] at androidx.appcompat.widget.SearchView.<init>(SearchView.java:290) [mono-rt] at androidx.appcompat.widget.SearchView.<init>(SearchView.java:276) [mono-rt] at androidx.appcompat.widget.SearchView.<init>(SearchView.java:272) [mono-rt] at crc6452ffdc5b34af3a0f.ScopedFragment.n_onCreateView(Native Method) [mono-rt] at crc6452ffdc5b34af3a0f.ScopedFragment.onCreateView(ScopedFragment.java:39) [mono-rt] at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104) [mono-rt] at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524) [mono-rt] at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261) [mono-rt] at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899) [mono-rt] at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1823) [mono-rt] at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1760) [mono-rt] at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2985) [mono-rt] at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:2888) [mono-rt] at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3129) [mono-rt] at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:552) [mono-rt] at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261) [mono-rt] at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899) [mono-rt] at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1817) [mono-rt] at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1760) [mono-rt] at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:547) [mono-rt] at android.os.Handler.handleCallback(Handler.java:942) [mono-rt] at android.os.Handler.dispatchMessage(Handler.java:99) [mono-rt] at android.os.Looper.loopOnce(Looper.java:201) [mono-rt] at android.os.Looper.loop(Looper.java:288) [mono-rt] at android.app.ActivityThread.main(ActivityThread.java:7872) [mono-rt] at java.lang.reflect.Method.invoke(Native Method) [mono-rt] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) [mono-rt] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
I have the same issue.
@DeveloperLookBook Did you got any solution to resolve the SearchBarRenderer?
Description
i am working on migrating xamarin forms project to .net MAUI.
i have followed the steps mentioned din the below link.
https://github.com/dotnet/maui/wiki/Migrating-from-Xamarin.Forms-(Preview)/979f30cf295ac8eab2f459211cf80a481fd2db6e
the migrated MAUI project is multi project (forms, iOS, Android). I am re using the renderers with MAUI compatibility packages.
getting exception on below line in one of the renderer files in android.
CreateRendererWithContext (Element, Context). Element is the NavigationPage which i am passing.
It is working in xamarin but giving exception in MAUI.
Exception Details : {Android.Views.InflateException: Binary XML file line #1 in com.companyname.librarytestappmaui:layout/fragment_backstack: Error inflating class androidx.fragment.app.FragmentContainerView ---> Java.Lang.IllegalStateException: FragmentManager is already executing transactions …} Android.Views.InflateException
I have attached exception screenshots.
could someone please help on this.
i am using KeyboardWrapperPage as MainPage in App.Xaml.cs
below is my KeyboardWrapperPage class in forms project
below is my KeyboardWrapperPageRenderer class in android project
below is my MauiProgram.cs in android project.
below is my App.Xaml.cs
Steps to Reproduce
Expected outcome : app should not crash as it s working in xamarin Actual outcome : app is crashing.
Link to public reproduction project repository
https://github.com/shirishavanquis/MAUIIssue.git
Version with bug
7.0.49
Last version that worked well
6.0
Affected platforms
Android
Affected platform versions
Android 13 and below
Did you find any workaround?
NO
Relevant log output
No response