片段管理器空引用异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了片段管理器空引用异常相关的知识,希望对你有一定的参考价值。
当我点击我的回收站视图中的项目时,我正在尝试转移到新片段:
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);
}
然后在具有recycleler视图的片段中调用此方法:
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();
}
我该如何解决?我的问题与其他人不同,因为我尝试了很多不同的方法,但我还没有找到解决方案。
答案
在一开始你将你的片段设置为null,然后有三种情况你给它一个值,我猜你应该确保至少满足其中一个案例,即卡片名实际上是其中一个案例。它甚至可能是某个地方的错字。
尝试添加一个默认语句并使其打印出来然后运行你的程序,如果它打印出来就意味着没有任何案例得到满足。
编辑:它必须在begin transaction方法中,仔细检查其中的任何空值。
以上是关于片段管理器空引用异常的主要内容,如果未能解决你的问题,请参考以下文章
Android App 在片段中创建 ListView 引用时关闭