Android基础之初探activity(页面跳转,数据传输)

来源:互联网 发布:淘宝那个目录怎么删除 编辑:程序博客网 时间:2024/06/02 08:47

1,Android的页面跳转通过不同的activity之间的跳转实现:
简单阶段:两个页面的跳转,主要是使用intent对象;
设置在按钮点击事件里面,当按钮发生点击事件时,页面跳转

//实例化意图对象①Intent intent=new Intent();                ②intent.setClass(MainActivity.this,MainActivity02.class);

2,实现不同的页面之间的数据传输
在第一个activity向第二个activity发送消息
原理和页面跳转相同,只是引入了一个bundle对象,bundle的意思为捆,束之意,意思是将数据打包,然后发送到其他页面;

“`
//实例化意图对象
Intent intent=new Intent();
intent.setClass(MainActivity.this,MainActivity02.class);

            //将当前数据封装到bundle对象中            Bundle bundle=new Bundle();            bundle.putString("CONTENT",content);            //使用intent。putExtra方法将bundle扔到另一个activity中            intent.putExtra("BUNDLE_CONTENT", bundle);

“`值得一提的是在bundle的数据存放以及intent的数据存放时,是类似map集合的,需要为数据设置键值对,将数据放入bundle中,然后设置一个键名,然后将bundle放入intent的putExtra中,然后启动aictivity,数据发送成功。

在数据接收端(即另一个activity),同样需要使用intent和bundle对象;不同的是不在实例化intent,而是getintent。bundle则是接受intent的getBundleExtra方法,得到相应的bundle对象,然后解析bundle得到具体的数据;接着就设置textview,就显示出了另一个activity发送的消息

//        获取activity02的intent对象        Intent intent = getIntent();        //通过该intent对象,获取bundle对象        Bundle bundle = intent.getBundleExtra("BUNDLE_CONTENT");        //通过bundle对象获取数据        String msg = bundle.getString("CONTENT");        //将数据传输给textview        textView.setText(msg);

3,实现两个activity之间的数据回传

所谓的数据回传,就是在数据发送过来的基础上,让接收端回执给发送端,同样的是使用intent和bundle对象,只是不需要设置setClass,不需要开启activity;

 Intent intent = new Intent();                Bundle bundle = new Bundle();                bundle.putString("MSG", "这是回传的数据");                intent.putExtra("BUNDLE_MSG", bundle);                setResult(RESULT_OK, intent);                MainActivity02.this.finish();

finish方法的意思是当页面回传回去之后,关闭本activity;
RESULT_OK是一个标识码,在数据回执接收端有用;

在数据接收端使用了一个方法:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {//        super.onActivityResult(requestCode, resultCode, data);        Log.i(TAG,"onActivityResult");        if(resultCode==RESULT_OK){            switch (requestCode){                case 100:                    Log.i(TAG,"这是mainActivity02的回传");                    Bundle bundle=data.getBundleExtra("BUNDLE_MSG");                    String str=bundle.getString("MSG");                    textView.setText(str);                    break;            }

由此方法负责接受其他activity的数据回传,此例中是单个activity的回传,由于本方法的存在,可以使多个页面实现数据的传递。
此方法使用了result_code;在发送端设置了RESULT_OK,在我看来,就代表一个密钥,当发送端和接收端匹配时,就可以实现数据的传递,不然,则无法传输,switch的存在就是为了应对多个页面传输时。

0 0
原创粉丝点击