java.lang.InstantiationException:no empty constructor解决方法

问题描述:定义一个MyFragment,明明有一个空的构造函数,却始终报java.lang.InstantiationException:no empty constructor错误

public class MyFragment extends Fragment {
    public MyFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.new_reminder_fragment, container, false);
        ...
        return rootView;
    }
}
解决方法:
public static class MyFragment extends Fragment {
    public MyFragment() {
    }
将类改成静态的即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 1/15 页 1 1.1 利用 Java 实现地球系动画完整实现实例(第 3 部分) 1.1.1 进一步扩展程序加载图像文件 1、GUI 中显示图像 drawImage()方法 public boolean drawImage(Image img,int x,int y,ImageObserver observer)实现在指定位置 并且按原始大小绘制指定的 Image,其中的各个参数如下: img 代表要绘制的图像对象, 而 x、y 是指要绘制的指定图像的矩形的左上角所处的位置, observer 是加载图像时的图像观察器。 JApplet 类已经实现了 ImageObserver 接口, 它可以作为加载图像时的图像观察器。 将 this 作为最后一个参数传递给 drawImage()便可将 Applet 对象传递过去;或者直接采用 null 对象 作为最后一个参数。 2、EarthPlanetApplet 程序代码如下 (1)回顾 Java 中的数组 数组也是一个对象,并且数组也是作为方法的对象引用值来传递的。 Image allImagesArray[]= new Image[NUMBER_IMAGES]; 但在创建数组的时候不使用小括号传参,因此在数组类中是没有构造方法的。数组类继 承自 Object 类(因为 new Object[0].getClass().getSuperClass()是 Object.class)。 可以获得数组所在类的 Class 对象和类名 Class imageArrayInstance = Image[].class; 而利用 imageArrayInstance.getName()方法可以获得数组所在类的类名。 数组类不能够通过普通的反射方式来创建一个实例。 如 果 强 行 执 行 imageArrayInstance.newInstance(); 就 会 得 到 下 面 的 错 误 : java.lang.InstantiationException。 (2)Java 中的数组为静态的 1) 所谓静态的数组是指其长度大小是固定的(利用 length 属性可以获得实际的长度,因 为在每个数组对象中都有 1 个 length 的 final 属性变量,这个变量指定了数组的大小, 即数组可以容纳元素的个数。 由于直接暴露成员变量, 因此不是一种很 OO 的风格! ) , 也就是不能在程序运行过程中添加新的元素和删除原有的元素, 要动态添加新的元素 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 2/15 页 2 数据必须要用到动态数组。 2) 因为数组是一种定义了相似数据元素索引化集合的数据结构, 这个集合中元素的个数 是固定的;数组下标及数组名是用来给访问者提供访问数组的途径,但数据的下标从 0 开始。 3) Java 中的数组跟 C/C++这些语言中的数组的语法结构很相似, 但是 Java 去掉了 C/C++ 中的可以使用指针来访问元素的功能。 注意: 1) 数组类是一个空类(自身没有声明任何成员变量、成员方法、构造函数和 Annotation 等),编译器其实是对 Array.length()这样的语句做了特殊的处理,直接编译成 arraylength 指令。 2) 相比 C/C++中的数组,Java 数组在安全性方面进行全面地改进。C/C++常遇到的缓存 区溢出或数组访问越界的问题,在 Java 中不再存在。因为 Java 使用特定的指令访问 数组的元素,这些指令都会对数组的长度进行检查。如果发现越界,就会抛出 java.lang.ArrayIndexOutOfBoundsException。 (3)Java 中的动态数组——其实为 Java 中的集合类 为什么要应用静态数组而不使用 Java 中的集合类(如 ArrayList 等)产生动态数组?主要 是考虑到效率和类型两方面的问题。 1) 效率: 要想保存和随机访问一系列对象, 此时的对象引用效率最高的方法莫过于数组。 2) 类型:Java 中的集合类都把对象当作没有具体类型对待(它们将其当作 Object 类型 处理),而 Object 类型是 Java 中所有类的根类,从某种角度看这种处理方法是非常 合理的,我们只需构建一个集合,然后所有 Java 对象都可保存到集合中。但由于数 组规定必须为相同的数据类型,因此创建一个数组时可让它容纳一种特定的类型。这 意味着可进行编译时间的类型检查防范自己设置了错误的类型或者错误地提取了一 种类型,而不是运行时的 Exception。 (4)静态创建数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值