Android 单击MVVMCROSS片段中的事件
我有一个片段类,像这样:Android 单击MVVMCROSS片段中的事件,android,xamarin,xamarin.android,mvvmcross,Android,Xamarin,Xamarin.android,Mvvmcross,我有一个片段类,像这样: public class TMSAccountFragment : MvxFragment { //some code } 按钮单击事件: #region OnClick of account button ImageView acc_Button = view.FindViewById<ImageView>(Resource.Id.accountbutton_orange); acc_Button.Click += delegate {
public class TMSAccountFragment : MvxFragment
{
//some code
}
按钮单击事件:
#region OnClick of account button
ImageView acc_Button = view.FindViewById<ImageView>(Resource.Id.accountbutton_orange);
acc_Button.Click += delegate
{
OnClick();
};
#endregion
public void OnClick()
{
FragmentTransaction ft;
Fragment frag;
frag = new TMSSlidingTabsFragment();
ft = FragmentManager.BeginTransaction();
ft.Replace(Resource.Id.sample_content_fragment, frag);
ft.AddToBackStack(null);
ft.Commit();
}
#地区点击账户按钮
ImageView acc_按钮=view.FindViewById(Resource.Id.accountbutton_橙色);
acc_按钮。单击+=代表
{
OnClick();
};
#端区
公共void OnClick()
{
碎片交易;
碎片碎片;
frag=新的TMSSlidingAbsFragment();
ft=FragmentManager.BeginTransaction();
ft.Replace(Resource.Id.sample\u content\u frag);
ft.AddToBackStack(空);
ft.Commit();
}
以下错误发生在FragmentManager.BeingTransaction()中代码>
无法将类型“android.support.v4.App.FragmentTransaction”隐式转换为“android.App.FragmentTransaction”
使用getSupportFragmentManager()代替getFragmentManager()
public void OnClick()
{
Fragment frag = null;
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
frag = new TMSSlidingTabsFragment();
fragmentTransaction .Replace(Resource.Id.sample_content_fragment, frag);
fragmentTransaction .AddToBackStack(null);
fragmentTransaction .Commit();
}
您需要使用
SupportFragmentManager
而不是常规的FragmentManager
public void OnClick()
{
var fragment = new TMSSlidingTabsFragment();
var transaction = SupportFragmentManager.BeginTransaction();
transaction.Replace(Resource.Id.sample_content_fragment, frag);
transaction.AddToBackStack(null);
transaction.Commit();
}
但是,由于您正在使用MVVMCross,我强烈建议您使用MVVM模式。也就是说,将此
单击
事件绑定到虚拟机中的IMvxCommand
,并使用适当的演示器来处理片段的呈现方式(可以找到一些有用的入门资源)不,getSupportFragmentManager()中存在问题;错误为getSupportFragmentManager();在当前上下文中不存在您是否使用了PagerAdapter?是的,我使用了PagerAdapter,但在不同的片段中