我有2个主要的活动,登录名和列表,它们使用firebase auth。在几次登录和注销后,如果我按下“后退”按钮(这两个活动都发生),则将重新加载相同的活动(尽管在它们之间进行意图时我使用finish())。
我尝试覆盖onBackButtonPressed,但没有任何效果。我在onCreate和onDestroy中打印了消息以确保它们被调用。
登录活动(仅相关内容)
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Log.wtf("TESTING", "CREATED: " + getClass().getSimpleName() + " -- TASK ID: " + getTaskId());
setAllOutlets();
mAuth = FirebaseAuth.getInstance();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.wtf("TESTING", "DESTROYED: " + getClass().getSimpleName() + " -- TASK ID: " + getTaskId());
}
private void goToListActivity(){
Intent listActivityIntent = new Intent(LoginActivity.this, com.technion.android.mylists.ListActivity.class);
startActivity(listActivityIntent);
finish();
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
}
列表活动大致相同,如果有人会说需要它,请添加它,因为它很大...我使用身份验证状态侦听器,并确保当用户单击注销按钮时即时通讯结束
对于这两项活动,无论用户正在进行什么活动,我都想按后退按钮并最小化该应用程序。
答案 0 :(得分:1)
尝试一下
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
moveTaskToBack(true);
}
https://developer.android.com/reference/android/app/Activity.html#moveTaskToBack(boolean)
答案 1 :(得分:0)
我记得,如果finish()
重载,您无需致电OnBackPressed()
在这种情况下,这是合理的
@Override
public void onBackPressed() {
switch (behaviorOptionsGroup.getCheckedRadioButtonId()) {
case R.id.finish:
finish();
return;
case R.id.moveTaskToBack:
moveTaskToBack(false);
return;
default:
super.onBackPressed();
}
}
我猜您是两次致电finish()
。在super.onBackPressed();
中输入一次,然后第二次显式显示,然后再调用。