标题: startActivityForResult [打印本页]

作者: 51黑fan    时间: 2016-1-31 02:37
标题: startActivityForResult

tartActivityForResult :

由Activity1启动Activity2->执行Activity2->在Activity2中调用setResult和finish方法数据将返回Activity1并触发onActivityResult函数;

实例:

step1:在Activity1中定义全局标志量

        private static final int REQUEST_CONNECT_DEVICE = 1;

step2:在Activity1中的按钮事件触发startActivityForResult

        Intent serverIntent = new Intent(Activity1.this,Activity.class);                   
        startActivityForResult(serverIntent,REQUEST_CONNECT_DEVICE);

step3:在 Activity2中定义变量名字用于数据回传到Activity1

        public static String EXTRA_DEVICE_ADDRESS = "device_address";

step4:在Activity2中触发setResut函数并调用finish方法传回数据

        Intent intent = new Intent();
        intent.putExtra(EXTRA_DEVICE_ADDRESS, address);
       
        // Set result and finish this Activity
        setResult(Activity.RESULT_OK, intent);//其中Activity.RESULT_OK是一个标志,用于咋下一步在Activity1的接收中区分是那个setResult发送的数据
        Toast.makeText(SearchDevice.this,info , 1).show();
        finish();//调用finfish方法返回AActivity

step5:完成step4之后会自动进入Activity1中的nActivityResult函数:

        public void onActivityResult(int requestCode, int resultCode, Intent data) {

                       switch (requestCode) {
                                        case REQUEST_CONNECT_DEVICE:
                                                    // When DeviceListActivity returns with a device to connect
                                           if (resultCode == Activity.RESULT_OK) {
                                                // Get the device MAC address
                                                      address = data.getExtras().getString(Activity2.EXTRA_DEVICE_ADDRESS);
                                                }                                       
                                        }
                        }







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1