android的正向传值与反向传值

1> android的正向传值:
场景: 由当前的Activity,切换到另外一个Activity,并且携带一定的数据到另一个Activity;
主要通过Intent(意图)来实现
由MainActivity切换到LoginActivity,并携带一定的数据

package com.example.zxjk.mydemo;

import android.content.Intent;
import android.content.pm.LabeledIntent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private Button button; //定义一个私有的成员变量
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //通过id取出按钮对象 然后给成员变量进行赋值
        button = (Button) this.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /**第一种方式: 通过意图来启动一个窗口的 */
                // 创建一个意图
                Intent intent = new Intent(MainActivity.this,LoginActivity.class);

                // 通过intent进行传值  调用putExtra进行复制
                intent.putExtra("name","Tom");
                intent.putExtra("age","22");
                intent.putExtra("weight","60");
                intent.putExtra("adress","南京");
                Bundle bundle = new Bundle(); // 创建一个bundle对象
                bundle.putString("code","1001");
                intent.putExtra("bundle",bundle);

                // 启动意图
                startActivity(intent);
                startActivity(intent,requestCode);
        });
    }
}
package com.example.zxjk.mydemo;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class LoginActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在XML文件当中加载视图 填充当前的窗口 一个窗口通常都会有一个布局文件与其相关联
        setContentView(R.layout.activity_login);

        //获取意图对象
        Intent intent = getIntent();

        // 取出意图对象中的具体数据 通过getExtra方法进行取值
        String name = intent.getStringExtra("name");
        int age = intent.getIntExtra("age",0);
        String adress = intent.getStringExtra("adress");
        Bundle bundle = intent.getBundleExtra("bundle");
        String code = bundle.getString("code");
    }
}

2> Android的反向传值
场景:MainActivity>>LoginActivity>>MainActivity

在MainActivity重载onActivityResult方法 获取子窗口传递的数据:
MainActivity中:

 /** 获取从子窗口传递过来的数据 */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1000 && resultCode == 1001){

        }
    }

requestCode 与 resultCode 通过这两个code可以实现两个特定窗口之间一一对应的传值

LoginActivity中:

Intent intent1 = new Intent();
        // 设置回传意图
        setResult(1001,intent1);
        // 结束当前窗口的生命周期
        finish();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值