小编Bra*_*ane的帖子

startActivityForResult的替代方案

编辑:将Fragment更改为Partial,当我写这篇文章时,我对Fragment对象一无所知.

我有一个部分包含一个按钮来调出联系人列表.这样做需要打电话

startActivityForResult( new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), MY_REQUEST_CODE );
Run Code Online (Sandbox Code Playgroud)

并在我的Activity中处理结果,如:

public void onActivityResult( int requestCode, int resultCode, Intent data ) {
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
            case MY_REQUEST_CODE: {
                Address address = contact_address( data );
                if (address != null) {
                    // do something with address
                }
            } break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

根据我在Activity布局中包含部分的方式,在其他部分中可能有几层深度,并且可能有多个部分实例.

我想避免将MY_REQUEST_CODE的ID一直传播到调用活动的部分 - 或其任何变体,比如将onClickListener分配给按钮 - 我不希望顶级UI关注部分如何完全是建造的.

有没有一种标准的方法来实现这一目标?在我看来,如果可以使onActivityResult接受Uri而不是int代码,则可以避免传播.我希望我在这里遗漏了一些明显的东西......

android

4
推荐指数
2
解决办法
7832
查看次数

标签 统计

android ×1