android intent 传递context,Android 全局获取Context & Intent传递对象

全局获取 Context

很多情况下都需要用到 Context,由于大部分操作都是在活动中进行的,而活动本身就是一个 Context 对象,所有只需要Activity.this 就可以轻松获得 Context对象。

但是,当应用程序的架构逐渐复杂起来的时候,很多的逻辑代码都将脱离 Activity 类,这种情况下获取 Context并非是那么轻松的一件事。

Android 提供了一个 Application 类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。

定制一个 Application 以便于管理程序内全局状态的信息,比如 Context,代码如下:

public class MyApplication extends Application {

private static Context context;

@Override

public void onCreate() {

super.onCreate();

//得到一个应用程序级别的 Context

context = getApplicationContext();

}

public static Context getContext() {

return context;

}

}

接下来需要在 AndroidManifest 文件的标签下指定程序启动时初始化 MyApplication 类:

...

这样就实现了一种全局获取 Context 的机制,之后不管你想在项目的任何地方使用 Context,只需要调用一下 MyApplication.getContext() 方法就可以了:

Toast.makeText(MyApplication.getContext(),"全局Context获取成功",Toast.LENGTH_SHORT).show();

使用 Intent 传递对象

Intent 的 putExtra( )方法中所支持的数据类型是有限的,当你想去传递一些对象的时候就需要将这些对象进行序列化。

序列化表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。

对象序列化的方法很简单,只需要让一个类去实现 Serializable 这个接口就可以了。

public class Festival implements Serializable {

private String name;

private String data;

public Festival(String name,String data){

this.name = name;

this.data = data;

}

public String getName() {

return name;

}

public String getData() {

return data;

}

}

接下来在 FirstActivity 中创建一个 Festival 实例,然后直接将它传入到 putExtra()方法中。

Festival festival = new Festival("元旦节","1月1日");

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);

intent.putExtra("festival_object", festival);

startActivity(intent);

最后在 SecondActivity 中调用 getSerializableExtra() 方法获取这个对象。

Person person = (Person)getIntent().getParcelableExtra("person_object");

如此一来,我们就成功实现了使用 Intent 传递对象的功能了。

打开App,阅读手记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值