DialogFragment 中的 ViewPager,IllegalStateException:Fragment 没有视图

2024-02-07

EDIT3:似乎只有 API17 及以上版本才能使 ViewPager 与 ChildFragmentManager 正常工作......

我正在尝试添加一个ViewPager到我的 DialogFragment:

public class FirstLaunchDialogFragment extends DialogFragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_Sherlock_Light_Dialog);
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final View v = getActivity().getLayoutInflater().inflate(
            R.layout.fragment_dialog_first_launch, null);
    ViewPager viewPager = (ViewPager) v.findViewById(R.id.pager);

    viewPager.setAdapter(new FirstLaunchFragmentsAdapter(getChildFragmentManager()));

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setView(v).setInverseBackgroundForced(true);
    return builder.create();
}
}

由于某些原因,它会崩溃说:

04-06 00:00:49.600: E/AndroidRuntime(3734): java.lang.IllegalStateException: Fragment does not have a view
04-06 00:00:49.600: E/AndroidRuntime(3734):     at android.support.v4.app.Fragment$1.findViewById(Fragment.java:1425)
04-06 00:00:49.600: E/AndroidRuntime(3734):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:901)
04-06 00:00:49.600: E/AndroidRuntime(3734):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
04-06 00:00:49.600: E/AndroidRuntime(3734):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
04-06 00:00:49.600: E/AndroidRuntime(3734):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
04-06 00:00:49.600: E/AndroidRuntime(3734):     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
.....

我一直在谷歌搜索Fragment does not have a view异常半天了,没有结果

在我看来,适配器无法膨胀布局或其他东西......

这是我的片段和适配器

public static class UserWelcomeFragment extends Fragment {

    public static UserWelcomeFragment newInstance() {
        return new UserWelcomeFragment();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_welcome_user, container, false);

        return v;
    }

}

private class FirstLaunchFragmentsAdapter extends FragmentPagerAdapter {

    public FirstLaunchFragmentsAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int arg0) {
        switch (arg0) {
        case 0:
            return UserWelcomeFragment.newInstance();

        case 1:
            return new IntegrationSelectingDialogFragment();

        default:
            return UserWelcomeFragment.newInstance();
        }

    }

    @Override
    public int getCount() {
        return 2;
    }

}

EDIT: https://code.google.com/p/android/issues/detail?id=42601 https://code.google.com/p/android/issues/detail?id=42601看起来相关

EDIT2:我正在 API 16 上进行测试,该项目正在使用支持库 v4 修订版 12


您正在哪个 Android 版本上进行测试? ViewPager 使用片段,并且由于您的 ViewPager 本身位于片段中,因此您正在嵌套片段。仅 API 17 (Jellybean) 支持嵌套片段,因此此实现仅适用于 Android 4.1+ 的设备。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DialogFragment 中的 ViewPager,IllegalStateException:Fragment 没有视图 的相关文章

随机推荐

  • 如何使用自定义消息 git stash 存储未跟踪的文件?

    我该如何表现git stash include untracked带有自定义消息 我试过了 git stash include untracked message Foo and git stash Foo include untracke
  • Python 的 url 请求超出了最大重试次数

    我正在尝试抓取此页面 我使用的代码是这样的 page get https www uobgroup com online rates gold and silver prices page 当我运行此代码时出现此错误 Traceback m
  • Sharpssh 目录列表

    我正在编写一个应用程序 允许我从远程服务器上传和下载文件 我使用 sftp 作为传输协议 我需要将所有文件和目录列出到列表视图中 我使用 Sharpssh 作为 sftp 有人能指出我正确的方向吗 感谢转发 巴斯 范 乌延 Sftp sft
  • Android:前台服务与wakeLock

    我对 Android 比较陌生 所以我问的问题可能看起来很明显 尽管我已经阅读了所有类似标题的问题 并且进行了广泛的搜索 我需要长时间连续监控加速度计 建议采用两种方法 1 获取在加速器被监控的整个过程中保持的部分唤醒锁 和 2 在前台服务
  • 在 Apache 和 WSGI 上部署 Django

    虽然我找到了很多使用 WSGI 在 Apache 上部署 Django 的技术支持 但不幸的是 事实上它们都让我感到困惑 我无法让 Django 运行 我希望这真的是一件容易的工作 但作为一个新人 我面临着困难 我的里面有两个 Django
  • PInvoke、指针和数组复制

    我们正在 c net 4 0 Win7 x64 上构建一个应用程序 目标为 x32 我们在我们的应用程序中使用第三方库 我们知道这个库是用C 编写的 然而 为了让 c 开发人员使用这个库 他们使用 P Invoke 对其进行了包装 这就是我
  • VS2019 中 ASP.NET Core 2.2 项目中的分析器警告

    我基本上有一个从默认 Razor Pages 模板创建的默认 ASP NET Core 2 2 项目 现在 在解决方案资源管理器 gt 依赖项中有一个名为 Analyzers 的节点 首先 一开始我并不知道它是用来做什么的 我想我现在知道了
  • 使用 live() 进行验证并通过 ajax() 提交

    我在 JQuery 中有这个 form validate rules captcha required true remote url gb include captcha php type post messages captcha Co
  • 如何使按钮在引导程序中响应?

    我有这个代码
  • ASP.NET视图状态加密问题

    我正在尝试打开视图状态加密Always作为我在 IIS6 中托管的 ASP NET 3 5 网站的安全措施 我们已关闭视图状态 但仍在此字符串中看到一些 控制状态 在测试环境中 我可以简单地在 web config 中设置以下内容 并且我无
  • 如何围绕现有的 Javascript 库创建 Angular 包装器?

    我有一个纯 JavaScript 库 用户可以通过 npm 安装 我想向该库添加 创建一个 Angular 包装器 以便可以在 Angular 项目中无缝使用它 但我不确定如何执行此操作 我正在使用 Angular cli v6 这非常类似
  • Stringify 删除了具有 Symbol 属性的 JavaScript 对象

    我正在尝试通过 Express 发送 React 组件树 我的组件数组包括关键的 typeof Symbol for react element 财产 我在用着res send 除了该属性之外 对象的其余部分都会通过 有人告诉我这可能与 S
  • 如何动态投射对象?

    我很确定以前有人问过这个问题 但不幸的是我发现的唯一的就是this https stackoverflow com questions 2903450 c sharp how to dynamically cast an object这对我
  • 在同一个项目中使用@jest-environment jsdom和@jest-environment节点[Jest-ReactJS]

    我们在项目中使用 Jest with React Testing Library 进行单元测试 在同一个项目中 我们有一些情况需要 jest environment jsdom 有些情况需要 jest environment节点 我们如何在
  • 确保 ASP.Net 文件上传安全

    我正在创建一个带有文件上传控件的 ASP Net 表单 然后该控件会将表单和文件的详细信息通过电子邮件发送给另一个管理员 我想确保这一点的安全 对于服务器和收件人 附件应该是简历 因此我将其限制为典型的文本文档 据我所知 最好的办法是检查文
  • Matplotlib savefig() 在多个图表上不断保存相同的图表

    所以我有一个函数generategraph file 它根据参数中的数据正确创建条形图 然后保存它 这是保存它的部分 plt show savefile file split txt 0 png plt savefig savefile 然
  • 如何在 Rails 中跳过记录未捕获的异常?

    使用自定义时exceptions app and rescue responses 应用程序可以更好地控制未捕获的异常和过多的日志记录DebugExceptions中间件变成噪音 例如 应用程序知道如何处理ActionPolicy Unau
  • Ruby on Rails:使用 post 方法链接,但参数位于 URL 中

    我在用着 link to My link path arg1 gt session arg1 arg2 gt session arg2 arg3 gt anyobject id method gt post 但生成的 HTML 链接包括 a
  • Twilio 将座席连接到队列中的呼叫

    我有 Twilio 的试用版 只允许使用 1 个电话号码 运行我的应用程序时 我通过 Twilio 进行身份验证 然后 我使用我的个人电话拨打我的 Twilio 号码 该号码会自动添加到我的 支持 队列中 效果很好 可以听到等待音乐 现在
  • DialogFragment 中的 ViewPager,IllegalStateException:Fragment 没有视图

    EDIT3 似乎只有 API17 及以上版本才能使 ViewPager 与 ChildFragmentManager 正常工作 我正在尝试添加一个ViewPager到我的 DialogFragment public class FirstL