startactivityforresult与接口回调

startactivityforresult我们已经很熟悉了,带返回值的跳转,今天我介绍一下接口回调,这个也是一种带返回值跳转,实现界面之间的交互,看startactivityforresult

                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                startActivityForResult(intent,mRequest_code);

   @Override

    //dispaly the message received from intent
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        String value = String.valueOf(resultCode);
        String dispaly = data.getStringExtra("message");
        Log.e(TAG, value);
        if (resultCode == mRequest_code) {
            mSetText.setText(dispaly);

        } else {
            Toast.makeText(MainActivity.this, "Request code wrong", Toast.LENGTH_SHORT).show();
        }
    }

 这是第一个界面中的代码,   mSendMsg.setOnClickListener(new View.OnClickListener() {
            @Override
            //send data to the main Activity
            public void onClick(View v) {
                String message = mMessage.getText().toString();
                Intent intent = new Intent();
                intent.putExtra("message",message);
                setResult(5,intent);

                finish();
            }
        });

这是跳转之后的界面。传回值进行数据的传递。

而我们用接口回调的时候是这样处理的

public static OnCityChangeCallBack OnCityChangeCallBack;

    public interface OnCityChangeCallBack {
        void onCityChange(String area);
        void onCityChange2(String area2);
    }

        mGetData2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
                OnCityChangeCallBack = new OnCityChangeCallBack() {

                    @Override
                    public void onCityChange(String area) {
                        mSetText2.setText(area);
                        //  Log.d(area, "adskljjjjjjjjjjjjjjjjjjf");
                    }
                    @Override
                    public void onCityChange2(String area2) {
                       /* mSetText2.setText(area2);
                        Log.d(area2, "adskljjjjjjjjjjjjjjjjjjf");*/
                    }
                };
            }
        });

在第二个界面中这么处理接口回调

 mSendMsg2.setOnClickListener(new View.OnClickListener() {

            @Override
            //send data to the main Activity
            public void onClick(View v) {
                String message = mMessage2.getText().toString();
                MainActivity.OnCityChangeCallBack.onCityChange(message);

                finish();
            }
        });

我个人根据还是startactivityforresult更加的方便一些,这个毕竟是Java的一种思想还是很有用的。

Demo地址:

https://github.com/yuanchongzhang/startactivity_CallBack_event_demo-master



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值