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

找不到片段构造函数

池兴邦
2023-03-14

我在一些设备上面临这个问题,并在崩溃分析中出错。很多用户设备都面临这个问题,但在我的设备上运行良好。

无法启动活动ComponentInfo{com.ox.outloks.new/com.ox.outloks.new.activities.maindraweractivity}:Android.support.v4.app.fragment$instantiationexception:无法实例化片段com.alchemative.outfitters.outfitters.fragments.productsfragment:找不到片段构造函数

错误出现在activity super.oncreate(savedInstanceState)中的行;

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

下面是ProductsFragment构造函数

    @SuppressLint("ValidFragment")
public ProductsFragment(String id) {
    categoryID = id;
}

共有1个答案

微生青青
2023-03-14

您创建的所有片段类都必须有一个公共的无arg构造函数。通常,最好的做法是根本不定义任何构造函数,而是依赖Java为您生成默认的构造函数。但您也可以这样写:

public ProductsFragment() {
    // doesn't do anything special
}

如果片段需要额外的信息,比如在发布的示例中的字符串ID,常见的模式是定义一个newinstance()静态“工厂方法”,它将使用参数bundle为片段提供信息。

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

现在,不是调用new ProductsFragment(id),而是调用ProductsFragment.newInstance(id)。并且,在片段中,可以通过调用getarguments().getString(“id”)来访问id。

通过利用参数包(而不是创建一个特殊的构造函数),您的片段将能够被Android框架销毁和重新创建(例如,如果用户旋转他们的手机),并且您所需的信息(id)将保持不变。

 类似资料:
  • 当创建一个流行的片段时,我得到一个空的构造函数错误。 请看看我写的代码,创建碎片时如何传递数据?

  • 我试图调用一个片段,但有时会收到以下错误,即使我的片段中有空构造函数 作为

  • 我在一些设备上遇到了这个问题,并且在我的崩溃分析中出现了一个错误。当应用程序遇到ANR故障并且错误为 无法启动activity ComponentInfo{com.qwykr.dryver.base/com.qwykr.dryver.base.activities.MainActivity}:Android.support.v4.app.fragment$InstantiationExceptio

  • 每当我进入设置活动并旋转设备时,我都会收到此错误消息“找不到片段构造函数”。下面是我的设置活动onCreate()方法和设置片段类。

  • 我有以下错误。我在DailyVerseFrament上添加了构造函数。但它仍然不起作用。我有这个问题超过一个星期了。

  • 问题内容: 我的MyBatis映射有问题。我有一个像这样的领域类: 一个映射器类,具有如下方法: 在数据库中,三列的类型分别为Number,Timestamp和Clob,并且名称与类字段中的名称相同。 当我使用此方法时,我得到一个: ExecutorException:在[MyClass;中找不到构造函数。 匹配[java.math.BigDecimal,java.sql.Timestamp,or