Fragment 打包遇到的坑

关于replugin插件中fragment使用注意 最近因公司业务需要去看了一下市面上的插件,别的我就不多说了,replugin目前来看社区还是比较活跃,整个框架也比较稳定,只是刚开始用的时候,想用宿主去调用插件的fragment时候反复崩溃,主要问题还是有两个方面:第一是v4包的冲突问题,如果用的不是v4包的fragment,那就没事,如果是,那么dependencies { compile 'com.qihoo360.replugin:... 阅读详情

Fragment构造函数打包时的踩坑:should provide a default constructor

今晚项目上线完成后,准备打个release的线上apk包,结果令人尴尬的事情出现了,丫的居然编译失败了,debug包一直编译正常啊。android studio报错:This fragment should provide a default constructor (a public constructor with no arguments),修改后又报新错误:Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]。下面就来具体说一下Fragment打包时报的这两个错误原因以及解决方案。
报错1:
This fragment should provide a default constructor (a public constructor with no arguments)
在打包时出现在这个问题,原因是一定要有一个无参的默认构造函数,如果不写任何构造函数,其实会默认初始化一个无参的构造函数,这时其实是不会报错的。但是一旦写了带参数的构造方法而没有重写无参的构造函数,这时就要打包编译时提示上边的警告了。
贴下我当时的一个错误或者不合理写法:

public class MyFragment extends BaseFragment{

    public MyFragment(Context context) {
        mContext = context;
    }

    public static MyFragment newInstance(Context context) {
        return new MyFragment (context);
    }
}

为了不让报这个错,还是按照官方建议写一个无参的构造函数,如下:

public class MyFragment extends BaseFragment{

    public MyFragment() {
    }

    public static MyFragment newInstance(Context context) {
        mContext = context;
        return new MyFragment ();
    }
}

其实也可以直接把无参的构造函数去掉,系统会默认创建的。

报错2:

Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead [ValidFragment]

在打包时出现这个问题,在类上加一个注解@SuppressLint(“ValidFragment”)可以达到不报错的目的,但是为避免Fragment中的非默认构造函数,官方还是建议使用默认构造函数加上Fragment#setArguments(Bundle)代替[ValidFragment]。
所以需要修改为如下的形式:

public class MyFragment extends BaseFragment{

    public MyFragment() {
        mContext = getActivity();
    }

    public static MyFragment newInstance(String tag) {
        MyFragment myFragment = new MyFragment();
        Bundle bundle = new Bundle();
        bundle.putString("tag",tag);
        myFragment.setArguments(bundle);
        return myFragment;
    }
}

按照上边的建议来修改Fragment的构造函数和静态工厂方法newInstance()来获取实例就可以避免在正式打包时报上边的两个错误了。

其实,还有一种方法也能达到不报错的目的,就是直接在 build.gradle 配置文件中的android{ ··· }节点内添加配置禁止在正式打包时检测这个错误就可以了,添加格式如下:

android {
    ··· ···
    buildTypes {
        release {
            ··· ···
        }
        debug {
            ··· ···
        }
    }

    lintOptions {
        abortOnError false
        checkReleaseBuilds false
    }
}

但是个人建议,应该尽量还是按照Google官方的建议解决方案来处理会比较好些。当然也可以视具体情况而定。

相关推荐

FPGA DMA IP核使用指南

数据传输:支持从源地址到目标地址的数据传输。中断管理:提供中断信号,便于CPU处理传输完成事件。传输控制:支持传输大小、方向和暂停/恢复控制。

weixin_66634995的博客 2428

Fragment构造函数打包时的踩坑:should provide a default constructor

打包编译报错 This fragment should provide a default constructor (a public constructor with no arguments),Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) ins

郭丽鹏的博客 1886

【现代电路理论】【2】考尔法设计无源单口网络

夏 弥:其实你在冰面上看到鱼浮上来 明年冬天如果你还在那里,那鱼还是会上来换气 那时候你就可以带一把冰镐 把冰面砸开把鱼捞上来熬汤

痛苦的时候装出幸福相,这不是那么难做到的事 2887

性能统计中常遇到的网络术语

1,转自http://welshie.blogcn.com/diary,29927725.shtmlAligment Error:一般指Ethernet帧里字节的部分bit位被丢失了,会造成FCS错的情况,更明确的说法是字节对齐错误.Byte Aligment Error,即接收到的内容为非整数倍的字节数.因为有部分 bit丢掉了,而以太网收发规范是以整数倍的字节作为基础的,如64~1518字

violetfeeling的专栏 1565

CloudCompare点云变换保姆级教程:从平移、旋转到绕任意点旋转,一次搞定

本文提供CloudCompare点云变换的全面教程,涵盖从基础平移、旋转到绕任意点旋转的高级技巧。通过详细的操作步骤和实战案例,帮助用户掌握点云数据处理的核心技能,提升三维模型对齐和变换的效率与精度。

weixin_28717969的博客 291

OPTEE:TA命令操作的实现(三)

上文我们创建好了通道,现在就是操作,怎么操作TA呢?REE侧的CA执行创建会话操作成功后,CA就可使用获取到的调用来让TA执行特定的命令。通过ioctl的系统调用发送到OP-TEE的驱动中,保存在共享内存中,并触发安全监控模式调用(smc)切换到Monitor模式(ARMv7)或EL3(ARMv8)中进行安全世界状态的处理。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1268

Android中Fragment的构造函数 his fragment should provide a default constructor

原文地址:http://blog.youkuaiyun.com/anobodykey/article/details/22503413 最近在使用Fragment的过程中遇到一个问题,初步是想在Fragment中创建一个构造函数,构造函数中传递两个自身需要的变量,如下 [java]view plaincopy publicclassTestFragmentextendsFr...

dodod2012的专栏 1239

大模型实战—通义千问大模型微调

这个参数仅针对 llama 类型的模型结构,默认勾选的是 q_proj 和 v_proj,具体的名词不容易理解,我就不多说了,可以简单的认为是对模型的理解能力进行优化,一般这两个就够了。当这个值较高时,适应新任务的能力会增强,但是对基础模型的影响会比较大,有过拟合的风险,尤其是在数据量有限的情况下。为了方便测试,我在云环境也创建了一个镜像,相关的环境都配置好了,可以直接使用几个国内开源的大语言模型,比如清华智谱的ChatGLM3-6B、零一万物的Yi-34B,还有最近阿里云开源的Qwen1.5-32B。

7万+

Eclipse 下Java工程的打包与发布

一、创建清单文件 MANIFEST.MF在需要打包的工程中创建MANIFEST.MF文件内容如下: Manifest-Version: 1.0 Main-Class: com.lijia.test.Main Class-Path: ./lib/org.eclipse.swt.win32.win32.x86_3.3.3.v3349.jar ./lib/org.eclipse.swt_3.3.2.v33

心中的执念的博客 1万+

第四章:无感FOC的平滑启动艺术:告别“咔哒”声与抖动

无感FOC启动技术面临"先有位置还是先有旋转"的核心矛盾,导致常见故障包括位置失准、负载突变等。基础方案采用开环I/F控制,但存在重载启动困难等局限性。进阶方案结合IPD位置检测技术,通过脉冲电压注入法精准定位转子初始位置。关键技术在于开环到闭环的平滑切换,采用混合观测器设计和相位对齐技术。量产优化包括自适应参数整定和故障恢复机制,确保启动可靠性和一致性。该系统工程方案可有效解决启动抖动、异响等问题,提升用户体验。

汽车软件开发 745

Unreal Engine Profiler:动画系统性能分析教程_2024-07-23_03-05-38.Tex

Unreal Engine Profiler 是一个内置的性能分析工具,它可以帮助开发者识别和解决游戏中的性能瓶颈。Profiler 提供了详细的性能数据,包括 CPU 使用率、GPU 负载、内存使用情况等,特别针对动画系统,可以查看动画蓝图的执行时间、骨骼动画的计算成本、以及动画混合和重定向的效率。通过这些数据,开发者可以定位到具体的问题,比如哪些动画状态消耗了过多的 CPU 时间,或者哪些动画资源导致了内存泄漏。

827

This fragment should provide a default constructor (a public constructor with no arguments

打包 错误信息 Error:(17) Error: This fragment should provide a default constructor (a public constructor with no arguments) (com.***.**.****.ToastDialog) [ValidFragment] 原因继承DialogFragment自定义Dialog的时候没有写无

Android 3969

【国产MCU】-认识CH32V307及开发环境搭建

CH32V307是[沁恒](https://www.wch.cn/)推出的一款基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度。加入单精度浮点指令集,扩充堆栈区,具有更高的运算性能。扩展串口UART数量到8组,电机定时器到4组。提供USB2.0高速接口(480Mbps)并内置了PHY收发器,以太网MAC升级到千兆并集成了10M-PHY模块。

视觉与物联智能 2347

打包时Fragment需要注意的一些问题

1,This fragment should provide a default constructor (a public constructor with no arguments) 在打包时出现在这个问题。原因是一定要有一个无参的构造方法,加上去就可以了。 2,Avoid non-default constructors in fragments: use a default c

星星的专栏 2904

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

aar打包依赖 android_打包依赖.aar文件以及坑总结

1,打开Gradle工具窗口,找到AndroidLibrary模块.在build任务中双击assemble.2,任务执行成功以后,在mylibrary/build/outputs/aar目录下就会打出.aar格式的包.默认Debug和Release的AAR包都会打出来,当然你也可以选择只打Debug的包,双击assembleDebug任务就可以了.只打Release的包同理.二、引入.aar...

weixin_40004960的博客 324

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android使用Fragment传参打包时报错

Android使用Fragment传参打包时报错Error:Error: This fragment should provide a default constructor (a public constructor with no arguments) (com.---.---.recored.recordFragment) [ValidFragment]

Ren_JX的博客 415

Fragment传递数据

Fragment与Activity之间 setArgument 接口回调 Fragment之间 通过Activity中转 接口回调 其他,ViewModel、FragmentResultListener

fxjzzyo的博客 6650

jenkins打包apk遇到的一些坑

1 .配置构建后操作 进入 Jenkins job 进入 job 配置 前往 “构建后操作” 点击 “增加构建后操作步骤” 选择 Archive the artifacts。1.安装as开发工具后使用该工具中的android manager 下载sdk包并且配置好sdk的环境变量和jdk的环境变量。2.指定文件路径 ---> app/build/outputs/apk/配置了apk 目录,当构建完成后在构建页面会显示构建产生的文件。解决广播发送无法成功的问题。

chengzhenjia的博客 240

Android组件化中拆分出Fragment单独运行

项目中的MainActivity是tablayout+viewpager组成,将各个模块拆分出来,因为由viewpager,所以各个模块展示是以Fragment为主。 拆分出来后,单独的module是可以运行的,而Fragment是不能直接展示的,简单一点也需要一个Activity作为载体,而这个Activity又不能在整体打包时添加到项目中。 需要的解决问题: 1.独立运行时,需要一个Ac...

Du_ZiLin的博客 1027

如何从Activity传递参数到Fragment中

本例,Activity从全局变量中获取用户名和认证结果的参数,需要将参数

windvally的专栏 4805

Android Fragment间的通信

其实进行通信就是一个Fragment把数据传递给Activity,然后Activity再传给另外一个Fragment所以实现了通信。 其中Activity实现了第一个Fragment中定义的一个接口。 展示~ 所有代码如下: 主类:MainActivity package com.example.fragmenttest; import android.ap

郭大帅 634

Android 之 Fragment

基于Android系统的设备越来越多,分辨率种类越来越多,Google提出Fragment的概念也是希望通过Fragment 解决屏幕碎片化问题。 Fragment最初有Google打包到V4的支持包中,Android4.0之后纳入sdk中。 用Fragment替换TabHost是Google推荐的方法。

风雨踏梦行 1717

一个Activity管理多个Fragment切换

先放效果图。有些时候需要整个页面改变,但是又没必要创建一个新的Activity,这时候可以使用这个方法。大致思路是,创建的第一个界面为主界面,通过这个界面打开其它的Fragment。主界面的Fragment是在MainActivity里面创建的,其它的Fragment是在主Fragment的java文件中创建。创建一个新的Fragment的时候把当前的Fragment隐藏,加入回退栈,这样按下返回键

像傻瓜一样坚持 1万+

Fragment与Activity

Fragment与Activity的关系 Fragment是Android3.0 之后提出的新功能,低于3.0的版本,使用Fragment要继承v4包中提供的Fragment,同时Activity也要继承v4包中提供的FragmentActivity来实现碎片化布局。Fragment不能单独使用,必须要嵌入到Activity中由Activity管理,来分担Activity的压力,Activity...

yee的博客 446

Android Fragment

1、Fragment简介 Android 3.0(API 11)添加了一个强大的功能就是 Fragment (片段),主要是为了给大屏幕(如平板电脑)提供更加动态和灵活的 UI 设计支持。 2、Fragment分类 现在,Google有两个版本的fragment实现可供选择:原生版本和支持库版本。 支持库版的Fragment来自AppCompat库 原生版本的fragment实现内置在设备系统中。...

yy的博客 434

Android UI高级之Fragment

在android开发中,写了一个关于继承Fragment的类时,如果有重载构造函数时,测试时不出现错误,但打包时,会提示“Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead”的错误。 这时,在类的前面加上@Suppres

UremSept 446
上一篇: Android Studio2.2 用CMakeLists 进行NDK开发遇到的坑
下一篇: ArrayList.addAll(),clone(),数据深浅拷贝问题
Code_Alone
博客等级 码龄9年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值