3月24日学习笔记(两个活动之间的数据传递)

一、向下一个活动传递数据
putExtra():第一个参数是键,第二个参数是要传递的数据。

button.setOnClickListener(new View.OnClickListener){
    @Override
    public void onClick(View view){
        String values = "Hello SecondActivity";
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        intent.putExtra("extra_values",values);
        startActivity(intent);
    }
}

然后在SecondActivity中将传递的数取出来

public class SecondActivity extends Activity{
    @Overried
    protected void onCreate(Buddle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);
        Intent intent = getIntent();
        String values = intent.getStringExtra("extra_values");
    }
}

二、返回数据给上一个活动
startActivityForResult():第一个参数是Intent,第二个参数是请求码。

button.setOnClickListener(new View.OnClickListener){
    @Override
    pubic void onClick(View view){
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        startActivityForResult(intent,1);
    }
}

请求码只要是一个唯一值就可以
在SecondActivity中添加按钮点击事件

public class SecondActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);

        button = (Button)findViewBy(R.id.button);
        button.setOnClickListener(new View.OnClickListener)(){
            @Override
            public void onClick(View view){
                Intent intent = new Intent();
                intent.putExtra("values_return"," Hello MainActivity!");
                setResult(RESULT_OK, intent);
                finish();
            }
        });
    }
}

setResult():第一个参数专门用于向上一个活动返回处理结果。一般只使用RESULT_OK或者RESULT_CANCELED,第二个参数把带有数据的Itent返回。
最后调用finish()销毁当前活动

在MainActivity中重写onActivityResult()方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent values){
    switch(requestCode){
    case1:
        if(resultCode == RESULT_OK){
            String returnedData = data.getStringExtra("values_return");
            Log.d("MainActivity",values_return);
        }
        break;
    default:
    }
}

调用startActivityForResult()方法,每一个活动返回的数据都会回调到onActivityResult()方法中。首先,检查requestCode来判断数据来源,然后检查resultCode判断处理结果是否成功,最后打印values_return里的返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值