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

页面切换返回后ImageView与TextView消失问题求助

问题分析与解决方案

问题根源

你遇到的问题核心在于:每次跳转到其他页面时调用了finish()方法,这会直接销毁当前的MainActivity实例。当你从其他页面按返回键回到主页时,系统会重新创建一个MainActivity,但此时新启动的MainActivity对应的Intent中,userName和ProfilePic这两个参数已经不存在了,导致TextView y没有文本内容、ImageView x没有加载到图片,最终出现控件“消失”的现象。

解决方案

方案1:移除跳转时的finish()调用(推荐)

不需要销毁MainActivity,跳转后MainActivity会保留在任务栈中,按返回键回到的是原实例,参数不会丢失。修改后的点击事件代码如下:

Agrup.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 移除finish()
        Intent intent = new Intent(MainActivity.this, AGrup.class);
        startActivity(intent);
    }
});

Dgrup.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 移除finish()
        Intent intent = new Intent(MainActivity.this, DGrup.class);
        startActivity(intent);
    }
});

BGrup.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 移除finish()
        Intent intent = new Intent(MainActivity.this, Bgroup.class);
        startActivity(intent);
    }
});

CGrup.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // 移除finish()
        Intent intent = new Intent(MainActivity.this, CGrup.class);
        startActivity(intent);
    }
});

LogOut.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // 退出登录时可保留finish(),无需再返回当前MainActivity
        finish();
        Intent intent = new Intent(MainActivity.this, UygulamaGirisSayfasi.class);
        startActivity(intent);
    }
});

方案2:持久化用户信息(适合必须销毁MainActivity的场景)

如果业务上需要销毁MainActivity,可以将userName和ProfilePic存储到SharedPreferences中,在MainActivity的onCreate方法中优先从SharedPreferences读取数据,而非仅依赖Intent参数:

  1. 在首次获取参数时保存到SharedPreferences:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getSupportActionBar().hide();
    AGrup = findViewById(R.id.Agroup);
    x = findViewById(R.id.x);
    y = findViewById(R.id.y);
    
    // 优先从SharedPreferences读取用户信息
    SharedPreferences sp = getSharedPreferences("user_info", MODE_PRIVATE);
    String userName = sp.getString("userName", "");
    String ProfilePic = sp.getString("ProfilePic", "");
    
    // 若SharedPreferences无数据,从Intent获取并保存
    if (TextUtils.isEmpty(userName)) {
        userName = getIntent().getStringExtra("userName");
        ProfilePic = getIntent().getStringExtra("ProfilePic");
        SharedPreferences.Editor editor = sp.edit();
        editor.putString("userName", userName);
        editor.putString("ProfilePic", ProfilePic);
        editor.apply();
    }
    
    y.setText(userName);
    if (!TextUtils.isEmpty(ProfilePic)) {
        Picasso.get().load(ProfilePic).into(x);
    }
    
    // 其他控件初始化代码...
}
  1. 退出登录时清空SharedPreferences:
LogOut.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        SharedPreferences sp = getSharedPreferences("user_info", MODE_PRIVATE);
        sp.edit().clear().apply();
        finish();
        Intent intent = new Intent(MainActivity.this, UygulamaGirisSayfasi.class);
        startActivity(intent);
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:46:08