锁定老帖子 主题:Activity之间的传值
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-07
Activity之间的传值:
方法1: 1给2传值 Activity1:
final Intent intent = new Intent(mCtx,Activity1.class) ; //将当前用户传递下去 intent.putExtra("user", mUser); startActivity(intent); 里边mUser是一个对象,传的事实上是一个Map,"user"是对象mUser的key
Activity2:
mUser = (User) getIntent().getSerializableExtra("user");
mUser是对象,getIntent()是Activity的方法,值得注意的是得到的mUser 不是引用,而是new了一个对象并赋值,如果这东西要回传的话,要startActivity(intent);就会很SB。 所以用方法2
------------------------------------------------------------------------------------
方法2:
Activity1:
intent.setClass(mCtx, Activity2.class);
intent.putExtra("user", mUser);
startActivityForResult(intent, 1);
并且在Activity1中
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==1 || data.getSerializableExtra("putUserbyhua")!=null) mUser=(User) getIntent().getSerializableExtra("putUserbyhua"); }
Activity2:
获取传来的值
mIntent = getIntent() mUser=(User) mIntent.getSerializableExtra(UserConst.USER_DATA);
在按返回键时跳转到1
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK){ final Intent intent=new Intent(); intent.setClass(mCtx, Activity2.class); intent.putExtra("putUserbyhua",mUser); this.setResult(1); this.finish(); } return super.onKeyDown(keyCode, event); }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-10
Android中Activity共享变量的另一方法:Application context: 多个Activity中经常使用同一变量时,使用Bundle则比较麻烦,每次调用Activity都需要设置一次。 如想在整个应用中使用,在java中一般是使用静态变量,而在android中有个更优雅的方式是使用Application context。 新建一个类,继承自Application
class MyApp extends Application { private String myState; public String getState() { return myState; } public void setState(String s) { myState = s; } } class MyApp extends Application { private String myState; public String getState() { return myState; } public void setState(String s) { myState = s; } }
在AndroidManifest.xml的application加个name属性就可以了,如下面所示:
使用时:(这个是重点)
class Blah extends Activity { @Override public void onCreate(Bundle b){ ... MyApp appState = ((MyApp)getApplicationContext()); String state = appState.getState(); ... } } class Blah extends Activity { @Override public void onCreate(Bundle b){ ... MyApp appState = ((MyApp)getApplicationContext()); String state = appState.getState(); ... } }
当然搞个单例也可以啊,呵呵,以后研究
|
|
返回顶楼 | |
发表时间:2011-05-16
楼主总结的不错,application确实很方便
|
|
返回顶楼 | |
发表时间:2011-05-16
我遇到了一个这方面的问题,还请楼主解答。
http://topic.csdn.net/u/20110513/14/6b948267-4a2f-4f0d-9318-8f6e685bb5d8.html 这是连接。 activity A 跳向 activity B 时,传递一个List<对象> 出现黑屏现 象,有网友说是oncreate事件加载过多数据,list.size()==500左右的时候就开始黑屏。 |
|
返回顶楼 | |
发表时间:2011-05-16
application 共享很不错。
|
|
返回顶楼 | |
发表时间:2011-05-17
我们一直都用application
|
|
返回顶楼 | |
发表时间:2011-05-17
application的生命周期知道哪为大虾可以指点下,在下不身感激
|
|
返回顶楼 | |
发表时间:2011-05-17
xucm1986 写道 application的生命周期知道哪为大虾可以指点下,在下不身感激
从程序开始,到结束 |
|
返回顶楼 | |
发表时间:2011-05-17
myyuren 写道 我遇到了一个这方面的问题,还请楼主解答。
http://topic.csdn.net/u/20110513/14/6b948267-4a2f-4f0d-9318-8f6e685bb5d8.html 这是连接。 activity A 跳向 activity B 时,传递一个List<对象> 出现黑屏现 象,有网友说是oncreate事件加载过多数据,list.size()==500左右的时候就开始黑屏。 这个我不大清楚,跳转和传数据应该是不同的线程吧,如果页跳过去了,数据还没传完,而数据和页面信息相关性很大,应该会出现这种情况,或者也是android的bug.应该加入同步支持,你可以试验一下,呵呵 |
|
返回顶楼 | |
发表时间:2011-05-17
jstl1point0 写道 application 共享很不错。
是的,给人一种一气呵成的感觉,不然会穿一堆特别sb的变量而且,会有修改的先后之分。 但是不知道application对于bean修改权限什么的,有没有逻辑上的安全隐患啊 |
|
返回顶楼 | |