下面是我的代码。我想要实现的是我在我的 Recycler View 中显示 View 。内部 View 寻呼机我正在显示一个 fragment ,在向左滑动时我正在显示另一个 fragment 。但是当我运行应用程序时。应用程序崩溃。不知道我哪里出错了。我认为这是 fragment 概念中的某个地方。请帮帮我
@Override
public void onBindViewHolder(ManageCustomerViewHolder holder, int position)
{
holder.viewPager.setAdapter(new MyPageAdapter(fragmentManager, fragments));
}
private List<Fragment> getFragments()
{
List<Fragment> fList = new ArrayList<Fragment>();
fList.add(MyFragment.newInstance("Fragment 1"));
fList.add(Myfragment1.newInstance("Fragment 2"));
return fList;
}
public class ManageCustomerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
ViewPager viewPager;
viewPager = (ViewPager) itemView.findViewById(R.id.viewpager);
itemView.setOnClickListener(this);
}
这就是错误所在:
java.lang.IllegalStateException: Fragment has not been attached yet.
最佳答案
我在我的应用中遇到了同样的问题。
堆栈跟踪:
java.lang.IllegalStateException: Fragment has not been attached yet. android.support.v4.app.Fragment.instantiateChildFragmentManager(Fragment.java:2154)
android.support.v4.app.Fragment.getChildFragmentManager(Fragment.java:704)
应用程序在此行崩溃:
function performSomeActionInChildFragments() {
List<Fragment> fragments = getChildFragmentManager().getFragments();
...
}
当 fragment 不再附加到其父 Activity/fragment 时会发生这种情况。所以一个简单的 isAdded()
检查应该可以为您解决这个问题。
修复:
function performSomeActionInChildFragments() {
if (!isAdded()) return;
List<Fragment> fragments = getChildFragmentManager().getFragments();
...
}
来自 documentation :
isAdded() - 如果 fragment 当前已添加到其 Activity 中,则返回 true。
关于android - fragment 还没有附加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43562394/