Android从CategoryAddActivity返回时意外退出登录的解决方法
Android从CategoryAddActivity返回后自动退出登录的问题解决
问题根源
你的问题出在DashboardAdminActivity启动CategoryAddActivity时的代码逻辑:启动新页面后调用了finish()方法,这会直接销毁当前的DashboardAdminActivity并将其从Activity栈中移除。当你在CategoryAddActivity点击返回按钮时,Activity栈中已经没有DashboardAdminActivity,系统会跳转至更早的MainActivity,从而出现“账号退出”的错觉。
解决方案
修改DashboardAdminActivity中启动CategoryAddActivity的代码,移除finish()调用:
原代码
binding.addCategoryBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(DashboardAdminActivity.this,CategoryAddActivity.class)); finish(); // 此方法导致DashboardAdminActivity被销毁 } });
修改后代码
binding.addCategoryBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(DashboardAdminActivity.this,CategoryAddActivity.class)); // 移除finish(),保留DashboardAdminActivity在Activity栈中 } });
原理说明
Android通过栈结构管理Activity:默认启动新Activity时,新页面会被压入栈顶,原页面保留在栈内。调用finish()会销毁当前Activity并将其从栈中移除。移除该方法后,DashboardAdminActivity会留在栈里,从CategoryAddActivity返回时,栈顶的CategoryAddActivity被弹出,DashboardAdminActivity会直接回到前台,不会跳转至MainActivity。
额外确认
CategoryAddActivity中的返回按钮逻辑是正确的:调用onBackPressed()是系统默认的返回行为,无需修改。
内容的提问来源于stack exchange,提问作者Latife Turan
相关产品推荐
相关产品推荐

