当前位置: 首页 > 知识库问答 >
问题:

使用侦听器没有构造函数初始化片段

盖辉
2023-03-14

当旋转手机或更改为深色模式(当我的活动重新创建时)时,用户将面临无法找到片段构造函数等问题。

无法启动活动组件信息{e.Quran.Qaz/e.Quran.Qaz.ui.Zhuz.QuranByPage}:androidx。碎片应用程序。片段$InstantiationException:无法实例化片段e.Quran。Qaz。用户界面。朱。PageFragment:找不到片段构造函数

在我的项目中有多个地方,我必须使用片段。我已经用这个解决方案解决了几乎所有的问题。但是,我必须用侦听器初始化我的片段。但是,用这个解决方案是不可能的。由于我的StackOverflow声誉,我无法对这个答案发表评论。

有一个公认的答案。据说:

您创建的所有片段类都必须有一个公共的无参数构造函数。一般来说,最佳实践是根本不定义任何构造函数,而是依赖Java为您生成默认构造函数。

并建议如下初始化片段:

public static ProductsFragment newInstance(String id) {
    Bundle args = new Bundle();
    args.putString("id", id);
    ProductsFragment f = new ProductsFragment();
    f.setArguments(args);
    return f;
}

有什么方法可以用newInstance方法中的侦听器初始化它吗?P、 如果有任何帮助,我将不胜感激。这是我首先要问的问题之一,不要这么严厉地评价我

共有1个答案

顾嘉良
2023-03-14

解决方案在这里

带有DatePicker回调的片段中的非默认构造函数

在回答中,我的答案是:

  1. 如果您不想更改配置(如屏幕旋转或内存不足),则片段应该具有空构造函数。当配置更改时,Android将使用空构造函数自动重新创建片段

这是一个重复的问题,有另一个语境。所以我不会删除这个问题。

 类似资料:
  • 我只是想习惯基本的复制构造函数。 我假设我正确地放置了复制构造函数。 但是当我试图编译时,我不断地得到错误“没有匹配的构造函数来初始化B” 我有点困惑。

  • 我知道这个问题以前有人问过,但请哼我一声。我很难掌握如何初始化一个类。 这是有问题的代码。 我感兴趣的错误是: 我做了建议的更改,现在我得到一个不同的错误:

  • 问题内容: import React, { Component } from ‘react’; 通常我看到的是,如果他使用es6类,人们会在构造函数中执行this.state。如果不是,他可能会使用getinitialstatestate函数放置状态。但是上面的代码(是的,这是一个有效的代码),两者都没有使用。我有2个问题,这里的状态是什么?那是局部变量吗?如果是,为什么没有?prevState来

  • 问题内容: 我有两个班,第一个是我的主班,第二个是我的编辑框架班。 我的第二个类(UpdateGUI)在其构造函数中提供oldName,并对其进行编辑,当我单击时,它将newName发送给我的第一个类。 我的第二堂课: 我的问题是,为什么newName为null? 更新: UpdateGUIDialog类: 输出: 我需要打印而不是null。 问题答案: Java对象有点像真实对象。并顾名思义:它

  • 主要内容:初始化 const 成员变量构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用 初始化列表。 C++构造函数的初始化列表使得代码更加简洁,请看下面的例子: 运行结果: 小明的年龄是15,成绩是92.5 李华的年龄是16,成绩是96 如本例所示,定义构造函数时并没有在函数体中对成员变量一一赋值,其函数体为空(当然也可以有其他语句),而是在函数首部与函数体之间添

  • 映射对构造函数没有限制或要求 (__init__ )类的方法。您可以自由地为您想要的函数要求任何参数,为ORM未知的实例分配属性,并且通常在编写Python类的构造函数时做您通常会做的任何其他事情。 sqlAlchemy ORM不调用 __init__ 从数据库行重新创建对象时。ORM的过程有点类似于Python标准库的 pickle 模块,调用低级 __new__ 方法,然后在实例上悄悄地恢复属