使用startActivityForResult与onActivityResult进行Activity交互

4星 · 超过85%的资源 需积分: 10 28 下载量 183 浏览量 更新于2024-09-18 收藏 349KB DOC 举报
"Activity跳转是Android应用开发中的重要概念,涉及到不同Activity之间的交互和数据传递。当需要从一个Activity启动另一个Activity以获取用户输入,然后返回原始Activity时,可以使用startActivityForResult(Intent, int)方法。这个方法的第二个参数Request Code用于区分不同事件的返回,由开发者自定义。新启动的Activity通过setResult(int, Intent)设定返回结果,其中Result Code用来表示操作状态,通常包括RESULT_CANCELED(0)和RESULT_OK(-1)。RESULT_OK的值为-1是为了保留所有大于0的数字供用户自定义,因为通常大于0代表成功,小于0代表失败,但Android采用了相反的约定,需特别注意。" 在Android应用中,Activity是用户界面的主要组件,它们之间可以通过多种方式切换。通常,Activity之间的切换是通过startActivity(Intent)完成,但这种方式无法直接将数据返回给启动它的Activity。而startActivityForResult(Intent, int)则提供了一个解决办法,使得新启动的Activity能够将结果传递回发起请求的Activity。 在startActivityForResult(Intent, int)方法中,传入的Intent对象用于启动新的Activity,而int参数是Request Code,它作为一个标识符,用于在onActivityResult(int, int, Intent)回调方法中区分不同的请求来源。例如,在通讯录应用中,可能有添加、编辑和删除联系人的多个事件,Request Code可以帮助识别这些事件的结果。 新启动的Activity在完成任务后,通过调用setResult(int, Intent)设置返回状态和数据。Result Code的值可以是预定义的常量,如RESULT_CANCELED(0)表示操作被取消,通常是用户按下设备的返回键;RESULT_OK(-1)表示操作成功。值得注意的是,虽然在许多系统中,正值通常表示成功,负值表示失败,但Android反其道而行,使用-1表示成功,0表示失败。此外,RESULT_FIRST_USER(1)及以上数值留给开发者自定义,以满足更复杂的业务逻辑。 在onActivityResult(int, int, Intent)方法中,第一个参数是Request Code,用于匹配启动Activity时设置的Request Code,第二个参数是Result Code,用于判断操作结果,第三个参数是返回的Intent,可以携带返回的数据。开发者需要在这里处理返回的结果,根据Result Code做出相应的处理,例如更新UI或执行其他业务逻辑。 Activity间的跳转和数据传递是Android应用开发中不可或缺的部分。通过理解并熟练运用startActivityForResult()和setResult(),开发者可以创建出更加交互友好且功能丰富的应用程序。在实际开发过程中,务必注意Result Code的特殊性,避免因误解导致的错误处理。