Android:覆盖后退按钮在库中不起作用
Android: Override of Back button not working in Library
我有一个 activity 具有覆盖后退按钮方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "onOptionsItemSelected");
if (item.getItemId() == android.R.id.home)
onBackPressed();
Log.d(TAG, "onOptionsItemSelected: if executed");
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
closeDialog();
}
在从硬件按下后退按钮时向用户显示警报对话框效果很好。当用户授予权限时,activity 完成。
但是,当用户单击工具栏中的后退箭头时,会显示对话框,但会调用活动 onPause()、onStop() 方法,并且会出现 window 泄漏,因为警报对话框可见并且 activity被杀死。
如何解决这个问题?
注意:当我们不在清单文件中提供父 activity 时,不会发生这种情况!
当你处理媒体时(在你的 if
案例中),你应该从 onOptionsItemSelected
return true
。
现在您正在无条件地呼叫 super.onOptionsItemSelected(item)
,这会触发 activity 完成按回键。
我有一个 activity 具有覆盖后退按钮方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "onOptionsItemSelected");
if (item.getItemId() == android.R.id.home)
onBackPressed();
Log.d(TAG, "onOptionsItemSelected: if executed");
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
closeDialog();
}
在从硬件按下后退按钮时向用户显示警报对话框效果很好。当用户授予权限时,activity 完成。 但是,当用户单击工具栏中的后退箭头时,会显示对话框,但会调用活动 onPause()、onStop() 方法,并且会出现 window 泄漏,因为警报对话框可见并且 activity被杀死。
如何解决这个问题?
注意:当我们不在清单文件中提供父 activity 时,不会发生这种情况!
当你处理媒体时(在你的 if
案例中),你应该从 onOptionsItemSelected
return true
。
现在您正在无条件地呼叫 super.onOptionsItemSelected(item)
,这会触发 activity 完成按回键。