当我单击“回收者”视图中的某个项目时,我正在尝试转移到新片段:
FragmentTransaction fragmentTx = ((AppCompatActivity)Activity).SupportFragmentManager.BeginTransaction();
fragmentTx.Replace(Resource.Id.container, fragment);
但是会出现以下错误:
System.NullReferenceException:对象引用未设置为对象的实例。
我尝试了很多不同的操作,但是没有用。
我从这里获得了回收站视图的点击:
private void MMainView_Click(object sender, EventArgs e)
{
int position = mRecyclerView.GetChildAdapterPosition((View)sender);
int indexPosition = (mFavourites.Count - 1) - position;
favFragment.TransitionOnCardClick(mFavourites[indexPosition].CalcName);
}
然后在具有回收者视图的片段中调用此方法:
public void TransitionOnCardClick(string cardName)
{
Fragment fragment = null;
switch (cardName)
{
case "Pace":
fragment = splitFragment;
break;
case "Watts":
fragment = wattFragment;
break;
case "Weight Adjustment":
fragment = weightFragment;
break;
}
FragmentTransaction fragmentTx = ((AppCompatActivity)Activity).SupportFragmentManager.BeginTransaction();
fragmentTx.Replace(Resource.Id.container, fragment);
fragmentTx.AddToBackStack(null);
fragmentTx.Commit();
}
该如何解决? 我的问题与其他人不同,因为我尝试了许多不同的方法,但仍未找到解决方案。
答案 0 :(得分:0)
在一开始,您将片段设置为null,然后在三种情况下给它赋予一个值,我想您应该确保满足至少一种情况,即卡名实际上是一个的情况。甚至可能是某个地方的错字。
尝试添加默认语句并使其打印出某些内容,然后运行程序,如果确实打印出,则意味着没有任何情况得到满足。
编辑: 它必须在begin transaction方法中,仔细检查其中是否有空值。