Activity传值问题

昨天去完美面试,实力炮灰,问了这个问题没答上来,现在仔细看看。。。


Activity传值的话主要是:

1.Intent传值

2.static变量传值

3.Application的传值

4.ClipboardManager(剪切板)的传值。

5.数据库的传值


主要说下前两种:

1、Intent 的传值。

Intent intent = new Intent(this, 要跳转的Activity.class);
intent.putExtra("变量名","值");
stratActivity(intent);
另外一种方式是 ou0618 同学指出的。

Intent it = new Intent(this, 要跳转的Activity.class);
Bundle bundle=new Bundle();
bundle.putString("变量名", "值");
it.putExtras(bundle);
startActivity(it);

这样在“要跳转的Activity” 里面就可以进行参数接收。

关于接收参数这里也说一下吧。两种方法的接收方式是一样的。

Bundle extras = getIntent().getExtras();
String 接收的变量 = extras.getString("变量名");

这样的传值方式相信是大家刚接触 android 时候最先了解的。

优势:最先被学习,理解难度不高,不存在资源释放的考虑
劣势:只能在两个Activity之间进行传值,如果多个Activity里面进行传值,则需要保存变量进行多次传递,代码的复杂度增加,也不容易维护。

好了,接下来希望是朋友们来进行完善,提出更多的方式。当然也希望大家指出彼此之间提出来的方案的问题。

2、静态变量的传值。
生命一个静态变量存储类。 public class StateManager

然后生命一个静态变量

public static String userName;

在页面跳转之前,使用 StateManager.userName 进行赋值。 在跳转之后的页面进行获取。

优势:使用方便,可以统一管理,容易维护。
劣势:静态变量的方式在理解上比intent 稍难。同时存在释放机制的处理问题(这里需要比较谨慎的对待。)

这种方式是我个人推荐的方式。

其他三种:http://www.cnblogs.com/wei1228565493/p/4020115.html

猜你喜欢

转载自blog.csdn.net/qq_24502469/article/details/52680069