这几天接触的关于activity的内容比较多.
慢慢的有了一定的理解.
也不知道自己想的是不是对的.如果以后发现有偏差再来修改吧.
简单的理解就是一个activity就是一个界面.
像打开手机qq,登陆页面是一个界面,一个activity.
输入账号密码点击登录就会跳转到会话界面,另一个activity.
怎么去实现activity的跳转?
这里就要用到intent类.
Intent intent = new Intent(this, MainActivity.class); //第一个参数是上下文,第二个参数为要跳转到的activity
startActivity(intent); //如果跳转之后要销毁之前的activity就要加上一句 finish();
这个是跳转activity的简单实现
当然,还有复杂点的用法.
比如说,跳转之后还要传一些参数给下一个activity,就像qq登录界面会传qq号码密码给下一个界面
这里就要用到intent的方法了
Intent intent=new Intent(MainActivity.this,RegisterActivity.class);
Bundle bundle=new Bundle(); //创建并实例化一个Bundle对象
bundle.putCharSequence("user", user); //保存用户名
bundle.putCharSequence("pwd", pwd); //保存密码
bundle.putCharSequence("email", email); //保存E-mail地址
intent.putExtras(bundle); //将Bundle对象添加到Intent对象中
startActivityForResult(intent, CODE); //启动新的Activity
这里用了打包的方法将数据放入bundle,然后再将bundle放入intent.
简单点的话还可以直接将数据放入intent.
新的activity怎么收取数据呢?
当然也是在intent里收了
final Intent intent=getIntent(); //获取Intent对象
Bundle bundle=intent.getExtras(); //获取传递的数据包
现在bundle里面就有了传过来的数据,用bundle调用getString(key)之类的方法得到数据
好了,现在可以给下一个activity传数据了.那反过来能不能由后面一个activity返回时向前一个activity传数据呢?
答案是肯定的,这里还是用到intent(ps:intent真是神通广大)
当然要做到能回传数据,就需要用到
startActivityForResult(intent, CODE); //启动新的Activity
这个方法,从字面上理解也比较容易,就是会得到结果
在下一个activity里面设置加上
setResult(0x717,intent); //传一个intent回去,可以是new的,也可以是上一个activity传过来的
前一个activity怎么收取呢?
答案是在里面重写onActivityResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==CODE && resultCode==CODE){
((EditText)findViewById(R.id.pwd)).setText(""); //清空密码编辑框
((EditText)findViewById(R.id.repwd)).setText(""); //清空确认密码编辑框
}
}
当然intent里面也可以带有数据,用get方法拿到.
暂时就总结这么点吧.以后有新的想法就随时更新啦.