今天在项目中用到了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>
<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` 未初始化时导致的空指针异常。