安卓笔记Activity的生命周期数据跳转

Activity的生命周期安卓笔记Activity的生命周期数据跳转

如上图

Activity的跳转和数据传递

跳转

 //显示跳转方法1最常用
 //之前我们经常使用的Intent,他的构造方法有两个参数
 //第一个参数从哪里开始跳转(context),跳转去哪里(context)
 Intent intent = new Intent(AAcitivity.this,BAcitvity.class);
 startActivity(intent);
//显示跳转方式2,反射
//                Intent intent = new Intent();
//                intent.setClass(AAcitivity.this,BAcitvity.class);
//                startActivity(intent);
                //显示跳转方式3
                //AndroidStudio路径较难把握(复制了三个路径还是不行。。。。),感觉不好用,原来的类的单词还拼错了
//                Intent intent = new Intent();
//                intent.setClassName(AAcitivity.this,"com.example.myapplication.jump.BAcitvity");
//                startActivity(intent);
//                //显示跳转方法4
//                Intent intent = new Intent();
//                intent.setComponent(new ComponentName(AAcitivity.this,"com.example.myapplication.jump.BAcitvity"));
//                startActivity(intent);

隐式跳转还需要注意在Manifest上对应的的启动activity上的标签下增加这一段安卓笔记Activity的生命周期数据跳转

数据传递

统一都写在了一个按钮的点击事件中

//来简单解释一下bundle的原理,我们要通过intent传给另一个Activity,intent里可以带一个bundle,而bundle塞了数据
                Intent intent = new Intent(AAcitivity.this,BAcitvity.class);
                //数据传递通过bundle,putExtra()方法本质上也是new了一个Bundle
                Bundle bundle = new Bundle();
                bundle.putString("name","死小孩");
                bundle.putInt("age",88);
                //putExtras()方法可以只塞bundle
                intent.putExtras(bundle);
                startActivity(intent);

在B上写了个TextView,用来接收数据

安卓笔记Activity的生命周期数据跳转

startActivityForResult:启动Activity,结束后返回结果

在后一个Activity完成使用后,当我们按下返回键时,我们希望从B回调数据给A,那么我们可以用这个方法
A中的代码

 Intent intent = new Intent(AAcitivity.this,BAcitvity.class);
                //数据传递通过bundle,putExtra()方法本质上也是new了一个Bundle
                Bundle bundle = new Bundle();
                bundle.putString("name","死小孩");
                bundle.putInt("age",88);
                //putExtras()方法可以只塞bundle
                intent.putExtras(bundle);
                //intent本身有意图的意思,启动之后放入这个intent就可跳转
                //第二个参数:请求码
                //作用:将回调的数据进行分组,在多个事件回调数据时,我们可以根据请求码来判断我们在什么时候回调了什么数据,从而实现逻辑分组
                startActivityForResult(intent,0);


//如何在A中接受数据呢?
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        ToastUtil.showMsg(AAcitivity.this,data.getExtras().getString("title"));
    }

B中的代码

 private TextView mTvTitle;
    private Button mBtnFinish;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        mTvTitle = findViewById(R.id.tv_show);
        mBtnFinish = findViewById(R.id.btn_finish);
        //在BActivity中,就要接收传过来的intent和Extras,两边的key需要一致
        Bundle bundle = getIntent().getExtras();
        String name = bundle.getString("name");
        int age = bundle.getInt("age");

        mTvTitle.setText(name+","+age);
        mBtnFinish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //回调数据时,我们任然使用bundle和intent回传数据
                Intent intent = new Intent();
                Bundle bundle1 = new Bundle();
                bundle1.putString("title","我又回来了");
                intent.putExtras(bundle1);
                setResult(AAcitivity.RESULT_OK,intent);
                finish();
            }
        });



    }
}
上一篇:adt-bundle环境安装


下一篇:Webpack快速入门