您现在的位置是:首页 > 正文

Android——UI篇:关于Fragment的构造参数打包release版本报错的问题

2024-04-01 04:46:33阅读 2

最近在做项目的途中遇到了问题,本来想着在fragment中创建一个构造参数来传递数据,获取Activity中的数据,如下:

public class FaultVideoFragment extends android.app.Fragment {


    private FaultEnclosureModel model2;
    private FaultDetailsActivity faultDetailsActivity;
    private FaultEnclosureBean faultEnclosureBean;
    private RepairDetailActivity repairDetailActivity;
//    public static String bizId;

    @BindView(R.id.gridView)
    GridView gridView;

    @BindView(R.id.rl_isShow)
    RelativeLayout rlIsShow;

    private View view;

    private int tag = 0;

    public FaultVideoFragment(int tag){
        this.tag = tag;
    }


这种写法debug测试的时候没有问题的,但是在打包release版本时出现如下错误

D:\HZZX\sw023_meis\code\android\Meiz\app\src\main\java\com\hzzx\meiz\fragment\fault\FaultPhotoFragment.java
Error:Error: This fragment should provide a default constructor (a public constructor with no arguments) (com.hzzx.meiz.fragment.fault.FaultPhotoFragment) [ValidFragment]

错误说要使用默认构造函数外加setArguments(Bundle)来代替,去 Android 的官网上查看Fragment的例子都是下面这个样子的:

CharSequence mLabel;  
  
    /** 
     * Create a new instance of MyFragment that will be initialized 
     * with the given arguments. 
     */  
    static MyFragment newInstance(CharSequence label) {  
        MyFragment f = new MyFragment();  
        Bundle b = new Bundle();  
        b.putCharSequence("label", label);  
        f.setArguments(b);  
        return f;  
    }  


好吧,到此为止,暂时没有其他的解决办法,我们只能模仿官网代码来修改我们的代码了,

去掉带参的构造方法,写一个newInstance静态方法,参数为我们需要传递的数据:

public class FaultVideoFragment extends android.app.Fragment {


    private FaultEnclosureModel model2;
    private FaultDetailsActivity faultDetailsActivity;
    private FaultEnclosureBean faultEnclosureBean;
    private RepairDetailActivity repairDetailActivity;
//    public static String bizId;

    @BindView(R.id.gridView)
    GridView gridView;

    @BindView(R.id.rl_isShow)
    RelativeLayout rlIsShow;

    private View view;

    private int tag = 0;



    public static FaultVideoFragment newInstance(int tag) {
        FaultVideoFragment newFragment = new FaultVideoFragment();
        Bundle bundle = new Bundle();
        bundle.putInt("tag", tag);
        newFragment.setArguments(bundle);
        return newFragment;
    }

然后再fragment的OnCreate方法中这样获取:

   @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        Bundle args = getArguments();
        if (args != null) {
            tag = args.getInt("tag");
        }

       
        super.onCreate(savedInstanceState);
    }

在Activity中我们这样发送数据:

 FaultVideoFragment faultVideoFragment = FaultVideoFragment.newInstance(2);


这样在fragment中的OnCreate方法中就可以获取到我们传递的数据了。



网站文章

  • vue3系列--reactive实现细节

    vue3系列--reactive实现细节

    vue3reactive实现细节

    2024-04-01 04:46:26
  • java 外观设计模式

    java 外观设计模式

    外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。使用时间: 客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接...

    2024-04-01 04:46:20
  • C++的public继承中的public、private和protected

    C++的public继承中的public、private和protected

        C++语言是对C语言的一种增强,而其主要贡献在于,为C语言增加了类和模板等功能,可以帮助实现面向对象编程和代码复用等更方便的功能。    C++语言的类,一般都包含两种成员,分别是成员变量和成员函数。成员变量可以用来表示该类的某些状态,而成员函数则可以用来对这些成员变量进行操作。而对于这些成员而言,最核心的概念当属类的封装和继承的概念。1. 封装    所谓封装,就是编写一个类...

    2024-04-01 04:45:38
  • 假脱机技术Spooling和守护进程

    假脱机技术Spooling和守护进程

    总结:在假脱机打印系统下,对于每个用户而言,系统并非即时执行其程序输出数据的真实打印操作,而只是即时将数据输出到缓冲区,这时的数据并未真正被打印,只是让用户感觉系统正在为自己打印;当系统引入多道程序技...

    2024-04-01 04:45:30
  • linux centos 安装svn,在CentOS 6.3中安装与配置SVN的方法

    安装说明系统环境:CentOS-6.3安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件检查已安装版本复制代码代码如下:#检查是否安装了低版本的SVN...

    2024-04-01 04:45:22
  • Puppeteer万物皆可爬

    Puppeteer万物皆可爬

    puppeteer 是一个Chrome官方出品的headless Chrome node库。它提供了一系列的API, 可以在无UI的情况下调用Chrome的功能, 适用于爬虫、自动化处理...

    2024-04-01 04:44:44
  • gin post 数据参数_golang--gin获取post里body的参数

    以下内容转载自https://blog.csdn.net/weixin_36344862/article/details/111932206如题,post发送数据有几种形式,form和流是最常用的。特...

    2024-04-01 04:44:32
  • 前端实现图片下载的方法

    在任何方案下,前端都无法绕过跨域的限制,所以需要图片所在的服务器对你当前域名开放权限,否则是无法下载的,最多能做到查看图片。1、直接使用a标签的download属性。2、canvas对象+a标签。3、ajax请求(blob或base64格式)+a标签。4、domtoimage+a标签。5、form表单。6、iframe。

    2024-04-01 04:43:51
  • mybatis运行原理详解

    mybatis运行原理详解

    第一部分:项目结构user_info表:没什么好说的就3个字段User实体类:@Datapublic class User { private Long id; private Strin...

    2024-04-01 04:43:44
  • Leetcode刷题详解——子集

    Leetcode刷题详解——子集

    在递归时我们需要保证递归结束时当前的状态与进行递归操作前的状态不变,而当我们在选择进行步骤2进行递归时,当前状态会发生变化,因此我们需要在递归结束时撤回添加操作,即进行回溯。数组一定存在2^(数组长度...

    2024-04-01 04:43:36