android intent 获取返回值
  ZsqcNNv7vC3L 2023年11月02日 38 0

Android Intent 获取返回值

在 Android 开发中,我们经常会使用 Intent 来实现不同组件之间的通信,例如从一个 Activity 启动另一个 Activity,或者从一个 Service 发送广播。在某些情况下,我们希望从目标组件获取返回值,这时就可以使用 Intent 的 startActivityForResult() 方法来实现。

startActivityForResult() 方法

startActivityForResult() 方法允许我们启动另一个组件并期望该组件在完成后返回结果。它的语法如下:

startActivityForResult(Intent intent, int requestCode)

其中,intent 是要启动的组件的 Intent 对象,requestCode 是一个用于识别结果的整数值。当目标组件完成后,它会调用 setResult() 方法并传递结果数据和一个结果码(RESULT_OK 或 RESULT_CANCELED)。然后,调用者组件的 onActivityResult() 方法会被调用,我们可以在该方法中处理返回的结果。

下面是一个示例,展示了如何使用 startActivityForResult() 方法启动一个目标 Activity,并获取返回结果:

public class MainActivity extends AppCompatActivity {
    private static final int REQUEST_CODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, TargetActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                // 处理返回的结果
                String result = data.getStringExtra("result");
                Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
            } else if (resultCode == RESULT_CANCELED) {
                // 处理取消操作
                Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

在上面的代码中,我们创建了一个 MainActivity,并在其中的按钮点击事件中启动了一个名为 TargetActivity 的目标 Activity。当目标 Activity 完成后,会调用 onActivityResult() 方法,我们可以在该方法中根据 requestCode 和 resultCode 来处理返回的结果。

类图

下面是上述示例中涉及的类的类图:

classDiagram
    class MainActivity {
        +onCreate(Bundle savedInstanceState)
        +onActivityResult(int requestCode, int resultCode, Intent data)
    }

    class TargetActivity

    MainActivity --> TargetActivity

序列图

下面是启动目标 Activity 并获取返回结果的序列图:

sequenceDiagram
    MainActivity ->> TargetActivity: startActivityForResult(intent, requestCode)
    TargetActivity ->> MainActivity: onActivityResult(requestCode, resultCode, data)

在序列图中,我们可以看到 MainActivity 发起了 startActivityForResult() 方法调用,然后 TargetActivity 完成后调用了 onActivityResult() 方法,将结果返回给 MainActivity。

通过以上的代码示例、类图和序列图,我们可以清楚地了解如何使用 Intent 获取返回值。这种方式非常适用于需要从目标组件获取结果的情况,例如用户登录、选择图片等。祝你在 Android 开发中取得成功!

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

ZsqcNNv7vC3L