【发布时间】:2017-03-15 08:36:29
【问题描述】:
我正在尝试通过按特定顺序调用的片段实现后退导航:A->B->C 并通过硬件按钮返回,我希望它们保持有序。
我使用fragmenttransaction.replace 来切换没有addToBackStack 的片段,因为它使我的ActionBarMenu 行为不端。
问题是当我在片段C 上时,后退按钮会直接返回到A。我发现这是因为click事件被执行了两次我要去B和直接去A。
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setOnBackButtonPresed();
}
private void setOnBackButtonPresed() {
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener( new View.OnKeyListener()
{
@Override
public boolean onKey( View v, int keyCode, KeyEvent event )
{
if( keyCode == KeyEvent.KEYCODE_BACK )
{
goBackToDays();
return false;
}
return false;
}
} );
}
private void goBackToDays() {
Log.e("fragmentC", "executing on back action")
}
logcat 结果:
03-15 08:37:17.353 21245-21245/com.test E/fragmentC: executing on back action
03-15 08:37:17.390 21245-21245/com.test E/fragmentC: executing on back action
谁能告诉我如何避免两次按钮事件?
【问题讨论】:
-
你能在github上发布一个项目的基本设置吗?