程序是关于底部导航条的(我用的是Android的底部导航条模板),我在fragment理定义了一个button控件,刚运行时可以点击进去,但是点击底部导航条的切换后,再点击会第一个fragment时,发现button点击不进去了,不能够进行实例化,不懂这个问题怎么解决。
这是报错的截图
可以发代码调试
不知道你这个问题是否已经解决, 如果还没有解决的话:2、点击底部Button,加载不同的Fragment
//如果已加载就用show hide方式切换,如果没加载就直接加载新Fragment
if (findStackFragment(tabsFragment.get(id).getClass(), getChildFragmentManager(), true) != null)
{
// 如果show和hide的Fragment不是同一个
getChildFragmentManager().beginTransaction().show(tabsFragment.get(id)).hide(tabsFragment.get(lastPosition)).commit();
}else{
getChildFragmentManager().beginTransaction().add(tabsFragment.get(id))..hide(tabsFragment.get(lastPosition)).commit();
}
判断目标Fragment是否已经加载
// 正常方式: 利用Tag找到该Fragment,但是如果是fragment存在于FragmentPagerAdapter中,这种方式就不准了,需要遍历子childFragment列表
<T extends SupportFragment> T findStackFragment(Class<T> fragmentClass, FragmentManager fragmentManager, boolean isChild)
{
Fragment fragment = null;
if (isChild)
{
// 如果是 查找子Fragment,则有可能是在FragmentPagerAdapter/FragmentStatePagerAdapter中,这种情况下,
// 它们的Tag是以android:switcher开头,所以这里我们使用下面的方式
List<Fragment> childFragmentList = fragmentManager.getFragments();
if (childFragmentList == null)
return null;
for (int i = childFragmentList.size() - 1; i >= 0; i--)
{
Fragment childFragment = childFragmentList.get(i);
if (childFragment instanceof SupportFragment
&& childFragment.getClass().getName().equals(fragmentClass.getName()))
{
fragment = childFragment;
break;
}
}
}
else
{
fragment = fragmentManager.findFragmentByTag(fragmentClass.getName());
}
if (fragment == null)
{
return null;
}
return (T) fragment;
}