Xamarin Forms - I have created one adaptive card custom renderer in my android project. In order to call the adaptive card renderer function, I need to pass in Fragment Manager. How can I get fragment manager from View Renderer?
In Xamarin.Android project, I can access fragment manager from fragment class. But Xamarin.Forms I have no idea of how to doing that.
[assembly: ExportRenderer(typeof(BaseTemplate.CustomViews.AdaptiveCardLayout), typeof(BaseTemplate.Droid.Renderers.DroidAdaptiveCardLayoutRenderer))]
namespace BaseTemplate.Droid.Renderers
{
public class DroidAdaptiveCardLayoutRenderer : ViewRenderer<AdaptiveCardLayout, Android.Views.View>, ICardActionHandler
{
public DroidAdaptiveCardLayoutRenderer(Context context) : base(context)
{
}
public void OnAction(BaseActionElement p0, RenderedAdaptiveCard p1)
{
throw new NotImplementedException();
}
public void OnMediaPlay(BaseCardElement p0, RenderedAdaptiveCard p1)
{
throw new NotImplementedException();
}
public void OnMediaStop(BaseCardElement p0, RenderedAdaptiveCard p1)
{
throw new NotImplementedException();
}
protected override void OnElementChanged(ElementChangedEventArgs<AdaptiveCardLayout> e)
{
CardRendererImplementation cardRenderer = new CardRendererImplementation();
ICardActionHandler cardActionHandler;
Context context = Android.App.Application.Context;
cardRenderer.Context = context;
//how to get fragment manager here?
}
}
}
You can use the Context to cast into activity. As your DroidAdaptiveCardLayoutRenderer have the default constructor with the context as a parameter.
Try this Code:
var activity = Context as Activity;
activity.FragmentManager.BeginTransaction().Replace(Resource.Id.container, BasicFragment.NewInstance()).Commit();
For V4 use:
using Android.Support.V7.App;
activity = Context as AppCompatActivity;
activity.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.container, BasicFragment.NewInstance()).Commit();