android - fragment 还没有附加?

标签 android android-fragments

下面是我的代码。我想要实现的是我在我的 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/

相关文章:

android - 什么是 "disable offline mode"和 "disable gradle offline"模式以及 Android Studio 4.1 中的此设置

android - 固定页脚不显示最底部的列表项

c++ - Android 中的 RTSP 客户端

android - 在滑动菜单 fragment 中为 ListView 添加 onitemclick 监听器

android - 始终在 Android 中使用 fragment

java - 检查耳机是否在不同的 API 级别上连接

android - 显示黑色背景的EditText

java - 使用 Kotlin 在 Android 中发送用于 Volley 授权的 header

java - 在抽屉导航中加载具有不同参数的单个 fragment

android - ListFragment 与 ListActivity - 使用哪一个?