使用Intent传值及回传值

简单传值

FirstActivity.java

1
2
3
4
5
6
7
8
findViewById(R.id.button).setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
        intent.putExtra("extra_data","data"); // 传字符串, 更多传值方法
        startActivity(intent);
    }
});

SecondActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
@Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_second);
      // 获取Intent对象
      Intent intent = getIntent();
      // 根据key获取value
      String extra_data = intent.getStringExtra("extra_data");
      // 获取一个没有的可以 结果 null
      String extra_data2 = intent.getStringExtra("extra_data2");
      Log.i(TAG, "onCreate: " + extra_data + extra_data2);
 }

回传值:

修改FirstActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * 监听获取activity返回的数据
 * @param requestCode 传入的请求码
 * @param resultCode 处理结果码
 * @param data intent数据
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case 1:
            if (resultCode == RESULT_OK) {
                String resultData = data.getStringExtra("data_return");
                Log.i(TAG, "onActivityResult: " + resultData);
            }
            break;
        default:
    }
}

修改SecondActivity.java

1
2
3
4
5
6
7
8
9
10
11
button = (Button) findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.putExtra("data_return", "hello FirstActivity");
        // 给上一个活动返回数据
        setResult(RESULT_OK, intent);// 回调(FirstActivity.java中)onActivityResult方法
        finish();
    }
});

  

  

posted @   qukaige  阅读(1816)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示