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

Android Studio(Java)中Activity间传递TextEdit值后返回时TextView数据丢失问题求助

解决返回原Activity时EditText数据丢失的问题

我来帮你搞定这个问题~先说说问题出在哪:你在submit_button方法里调用了finish(),这个方法会直接销毁当前的TwoTeam Activity。当你从Begin返回时,系统只能重新创建一个TwoTeam的新实例,之前输入的内容自然就丢失了。另外,就算你不调用finish(),如果系统内存紧张,后台的TwoTeam可能被回收,重建时数据也会丢。下面给你两个关键解决步骤:

步骤1:移除finish()调用

先把submit_button里的finish()删掉,这样TwoTeam会被保留在后台任务栈中,从Begin返回时会直接恢复原来的实例,EditText默认会保存自己的输入状态(前提是你的EditText在布局里有正确的android:id属性)。修改后的方法代码如下:

public void submit_button(View view) {
    Intent intent = new Intent(TwoTeam.this, Begin.class);
    name_first = first_name.getText().toString();
    name_second = second_name.getText().toString();
    intent.putExtra("name1", name_first);
    intent.putExtra("name2", name_second);
    startActivity(intent);
    // 移除finish(),避免当前Activity被销毁
}

步骤2:处理Activity被系统回收的极端情况

为了应对系统内存不足导致后台Activity被回收的场景,我们需要手动保存和恢复EditText的内容,通过onSaveInstanceState和onRestoreInstanceState方法实现。修改后的TwoTeam完整代码:

public class TwoTeam extends AppCompatActivity {
    EditText first_name, second_name;
    String name_first, name_second;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two_team);
        first_name = findViewById(R.id.first_name);
        second_name = findViewById(R.id.second_name);
        
        // 如果之前有保存的数据,恢复到EditText中
        if (savedInstanceState != null) {
            name_first = savedInstanceState.getString("saved_name1");
            name_second = savedInstanceState.getString("saved_name2");
            first_name.setText(name_first);
            second_name.setText(name_second);
        }
    }

    // 保存当前EditText的内容,防止Activity被回收时数据丢失
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("saved_name1", first_name.getText().toString());
        outState.putString("saved_name2", second_name.getText().toString());
    }

    public void submit_button(View view) {
        Intent intent = new Intent(TwoTeam.this, Begin.class);
        name_first = first_name.getText().toString();
        name_second = second_name.getText().toString();
        intent.putExtra("name1", name_first);
        intent.putExtra("name2", name_second);
        startActivity(intent);
    }
}

这样修改后,不管是正常返回还是Activity被回收重建,你输入的内容都能稳稳保留下来啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:27:48