今天在项目中用到了Parcelable实现序列化,至于如何实现Parcelable,网上例子很多,在这里就不做介绍了。今天主要记录下在使用过程中遇到的两个坑。

1.在实现Parcelable过程中,我们要在class中创建一个Parcelable.Creator 的实例,需要注意的是,改实例的名字 必须是“CREATOR”,不然程序会报

Parcelable protocol requires a Parcelable.Creator object called  CREATOR on class *****异常

2.CREATOR 的修饰符必须是 final static 类型的,不然在Intent,或者Bundle传值的时候回报NullPointerException,具体报错信息如下:

java.lang.NullPointerException

expected receiver of type com.cuju.bean.BeanVenueFavor, but got null

引起这个错误的原因可能有两个,除了上面这个还有可能,put的时候传了null值。 今天在项目中用到了Parcelable实现序列化,至于如何实现Parcelable,网上例子很多,在这里就不做介绍了。今天主要记录下在使用过程中遇到的两个坑。1.在实现Parcelable过程中,我们要在class中创建一个Parcelable.Creator 的实例,需要注意的是,改实例的名字 必须是“CREATOR”,不然程序会报Parcelable protocol requires Uri uri = Uri.parse(); Inte nt it = new Inte nt ( Inte nt .ACTION_VIEW,uri); startActivity(it); //显示某个坐标在地图上 Uri uri = Uri.parse(geo:38.899533,-77.036476); Inte nt it = new Inte nt ( Inte nt .Action_VIEW,uri); startActivity(it); //显示路径 Uri uri = Uri.parse(http://ma
本文介绍 Android Inte nt 的各种常见作用。 1 Inte nt .ACTION_MAIN String: android . inte nt .action.MAIN 标识Activity为一个程序的开始。比较常用。 Input:nothing Output:nothing <activity android :name=.Main android :label=@string/app_name> < inte nt > <action android :name= android . inte nt .action.MAIN> &lt;category androi
在使用 Inte nt 进行界面之间的传值的时候,传入的方式如下: Inte nt i = new Inte nt (this, OtherScreen.class); i.put Extra ("id1", "first"); startActivity(i);然后在新界面当中获取值的时候采用get Extra s()的方式,就会 空指针的异常,代码如下: String resul
这个例子主要是获取 Android 系统手机的电量信息,使用了 inte nt .get Extra s()方法来获取实现,关于此方法的使用,请参考以下的代码:   public void onReceive(Co nt ext co nt ext, Inte nt inte nt ) {//重写onReceiver方法    i nt curre nt = inte nt .get Extra s().getI nt ("level");//获得当前电量    i nt total = inte nt .get Extra s().getI nt ("scale"); //获得总电量    i nt perce nt = curre nt *100/total;//计算百分比    TextView tv = (TextView)findViewById(R.id.tv);//获得TextView对象    tv.setText("现在的电量是:" perce nt "%。");//设置TextView显示的内容   }
(左图为分享页面,右图为接收分享页面) 2、实现原理 通过 Inte nt 获取到第三传过来的分享内容,一般是文字描述加链接,获取其中的文字,按自己想要的方式显示出来即可,然后通过其中的地址链接,去获取网页源码,解析其中的图片地址,拿到图片地址将其显示到imageview即可,有些网站无法获取完整源码或拿不到图片地址,则直接取网站的favicon.ico。 3、代码实现 1、在对应的activity中注册拦截:
最初的写法如下, inte nt .put Parcelable ArrayList Extra ("LIST", list);中的list 错,Wrong 2nd argume nt type. Found:'java.util.List',required: 'java.util. ArrayList ' public void getSchoolMajorSuccess(List list) {
【一】我在看一个项目的代码时候发现一个我从未认识的知识点: parcelable 。出现在一个对象类 实现了这个 parcelable 接口类。我搜索了一些资料来学习这个知识点。以下是我的学习笔记 【二】新建一个工程文件(比如 Parcelable Demo) 1、生成的Activity文件先别管吧。 2、另新建一个名叫My Parcelable 的java文件,实现 Parcelable 接口。会出现2个重写
}); listView.setOnItemClickListener((adapterView, view, i, l) -> { DraftsChapter draftsChapter1 = (DraftsChapter) draftsChapterAdapter.getItem(i); Inte nt inte nt 1 = new Inte nt (searchActivity.this, WriteActivity.class); String sendID = draftsChapter1.getId(); String sendTitle = draftsChapter1.getTitle(); String sendCo nt e nt = draftsChapter1.getCo nt e nt (); inte nt .put Extra ("id", sendID); inte nt .put Extra ("co nt e nt ", sendCo nt e nt ); inte nt .put Extra ("title", sendTitle); String fragme nt Name="A"; inte nt .put Extra ("key",fragme nt Name); inte nt .put Extra ("bookId", bookId); startActivity( inte nt 1); }); 错java.lang. NullPointerException : Attempt to invoke virtual method 'java.lang.Object com.example.mywriteproject.Adapter.DraftsChapterAdapter.getItem(i nt )' on a null object reference
这个错误提示表明你在调用 `draftsChapterAdapter.getItem(i)` 时,`draftsChapterAdapter` 对象为空。你需要在调用该方法之前先对 `draftsChapterAdapter` 进行初始化,或者检查其是否已经初始化。你可以在代码中添加类似以下的判断语句: if (draftsChapterAdapter != null) { DraftsChapter draftsChapter1 = (DraftsChapter) draftsChapterAdapter.getItem(i); // ... 这样可以避免在 `draftsChapterAdapter` 未初始化时导致的空指针异常。