• Android开发笔记(十五)——Activity的跳转和数据传递


    先新建好两个Activity分别命名为 AActivityBActivity

    显式跳转和隐式跳转

    显式跳转
    示例代码1:(一般采用这种方法)

            mBtnJump.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //显示1
                    Intent intent = new Intent(AActivity.this,BActivity.class);
                    startActivity(intent);
                }
            });
    

    示例代码2:

            mBtnJump.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //显示跳转2
                    Intent intent = new Intent();
                    intent.setClass(AActivity.this,BActivity.class);
                    startActivity(intent);
                }
            });
    

    示例代码3:

            mBtnJump.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //显示跳转3
                    Intent intent = new Intent();
                    intent.setClassName(AActivity.this,"com.example.myapplication.jump.BActivity");
                    startActivity(intent);
                }
            });
    

    示例代码4:

            mBtnJump.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //显示跳转4
                    Intent intent = new Intent();
                    intent.setComponent(new ComponentName(AActivity.this,"com.example.myapplication.jump.BActivity"));
                    startActivity(intent);
                }
            });
    

    隐式跳转

    AndroidManifest.xml 中设置 BActivity</intent-filter> 属性如下:

            <activity android:name=".jump.BActivity"
                android:label="B">
                <intent-filter>
                    <action android:name="com.example.test.BActivity" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>
    

    然后在 AActivity.java 中进行隐式跳转的代码编写:其中 setAction 的内容就是在 AndroidManifest.xml 中设置 BActivity</intent-filter> 中的 action

            mBtnJump.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //隐式跳转1
                    Intent intent = new Intent();
                    intent.setAction("com.example.test.BActivity");
                    startActivity(intent);
                }
            });
    

    Activity之间的数据传递

    AActivity 中, bundle 里面放了一些数据,然后把 bundle 放到 intent 中去:

            mBtnJump.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //显示1
                    Intent intent = new Intent(AActivity.this,BActivity.class);
                    Bundle bundle = new Bundle();
                    bundle.putString("name","布丁");
                    bundle.putInt("number",44);
                    intent.putExtras(bundle);                
                    startActivity(intent);
                }
            });
    

    这样 AActivity 就带着 intentintent 中带着数据就传送到了 BActivity 中。

    BActivity 如何接受数据?在 BActivity.java 中的 onCreate 函数中添加:

            mTvTitle=findViewById(R.id.tv_title);
            Bundle bundle = getIntent().getExtras();
            String name = bundle.getString("name");
            int number = bundle.getInt("number");
            mTvTitle.setText(name+','+number);
    

    AActivity通过跳转页面把数据传到的BActivity中的TextView中,这样就实现了两个Activity之间的数据传递。

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

    startActivityForResult :当从AActivity跳转到BActivity中之后,再次返回AActivity,希望从BActivity返回一些数据给AActivity,就可以通过该方法实现。

    把之前的 startActivity(intent); 替换成如下代码: 其中第二个参数是请求码,可以根据请求码来判断是哪一步跳转过去的:

    startActivityForResult(intent,0);
    

    在BActivity中添加一个Button,添加一个点击事件:

            mBtnFinish.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent();
                    Bundle bundle1 = new Bundle();
                    bundle1.putString("title","我回来啦");
                    intent.putExtras(bundle1);
                    setResult(Activity.RESULT_OK,intent);
                    finish();
                }
            });
    

    然后就回到了AActivity界面。

    这时候AActivity如何接受BActivity返回的数据?使用 onActivityResult 这个方法。

        @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            Toast.makeText(AActivity.this,data.getExtras().getString("title"),Toast.LENGTH_LONG).show();
        }
    

    这时从BActivity返回AActivity的时候,会弹出一个Toast显示“我回来啦”

  • 相关阅读:
    mongo数据更新(修改器)
    mongo数据排序和分页显示
    mongodb数据操作(CRUD)
    mongodb配置和基本操作
    lua语法基本
    awk常见基本使用
    sed命令常见用法
    Python(面向对象编程4——继承顺序、封装)
    Python(面向对象3 ——实例)
    Python(面向对象编程——2 继承、派生、组合、抽象类)
  • 原文地址:https://www.cnblogs.com/yangdd/p/13354733.html
Copyright © 2020-2023  润新知