You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在另一个Activity点击按钮后修改MainActivity的TextView值

解决Activity间点击按钮修改另一个Activity TextView的问题

问题分析

当前代码在Activity2点击按钮时,通过startActivity启动了新的MainActivity实例,而非回到之前的MainActivity,因此原MainActivity的onRestart仅在按返回键回到它时触发。要实现点击Activity2按钮即修改原MainActivity的TextView,需通过Activity间数据传递+返回原实例的方式实现。

解决方案(传统startActivityForResult方式)

修改MainActivity代码

使用startActivityForResult启动Activity2,并通过onActivityResult接收返回的数据:

package com.example.activity1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView textView;
    Button submitButton;
    private static final int REQUEST_CODE = 1; // 自定义请求码,用于识别返回数据

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

        textView = findViewById(R.id.text1);
        submitButton = findViewById(R.id.submit);

        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 启动Activity2并传递请求码
                startActivityForResult(new Intent(MainActivity.this, Activity2.class), REQUEST_CODE);
            }
        });
    }

    // 接收Activity2返回的数据
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 匹配请求码和结果码,确保数据来自目标Activity且返回成功
        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
            String newText = data.getStringExtra("NEW_TEXT");
            textView.setText(newText);
        }
    }
}

修改Activity2代码

点击按钮时携带数据并关闭当前Activity,返回原MainActivity:

package com.example.activity1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Activity2 extends AppCompatActivity {

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

        Button reverseButton = findViewById(R.id.reverse);

        reverseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 创建Intent封装要传递的文本数据
                Intent resultIntent = new Intent();
                resultIntent.putExtra("NEW_TEXT", "从Activity2修改完成");
                // 设置返回结果码
                setResult(RESULT_OK, resultIntent);
                // 关闭当前Activity,回到原MainActivity
                finish();
            }
        });
    }
}

说明

  • 此方案中,Activity2点击按钮后不会启动新的MainActivity,而是关闭自身并将数据返回给之前的MainActivity实例,触发onActivityResult方法完成TextView修改。
  • 若使用AndroidX,也可采用更推荐的Activity Result API替代startActivityForResult,逻辑类似但更符合现代Android开发规范。

内容的提问来源于stack exchange,提问作者Bhavya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:39:23