控制非Activity类中的后退按钮?

时间:2014-04-15 15:07:47

标签: android android-fragments fragment back-button

我有一个带有片段和TabFragment extends Fragment类的Actionbar应用程序,我在其中自定义片段的功能。

我希望能够控制后退按钮的作用。

@Overriding onBackPressed() 

无效,因为我不在活动中, 也不会

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
       //my code here
    }
    return super.onKeyDown(keyCode, event);
}

我的目标是在我根据布尔变量的true / false值按回时隐藏一些特定的视图。有关如何操作此功能的任何建议?谢谢!

a busy cat

1 个答案:

答案 0 :(得分:1)

我遇到了和你一样的问题,但我意识到你必须处理运行你的片段的活动中的后退按钮。您需要覆盖活动代码中的onBackPressed(),而不是片段代码中的@Override public void onBackPressed() { try { final LiveWorkFragment liveFragment = (LiveWorkFragment)getFragmentManager().findFragmentByTag("live_work");//LiveWorkFragment is a fragment final NonLiveWorkFragment nonLiveFragment = (NonLiveWorkFragment)getFragmentManager().findFragmentByTag("non_live");//NonLiveWorkFragment is a fragment final SignatureFragment signatureFragment = (SignatureFragment)getFragmentManager().findFragmentByTag("signature");//this is a Fragment too if(liveFragment == null && nonLiveFragment == null && signatureFragment == null) { super.onBackPressed(); } if(liveFragment != null) { if (liveFragment.isVisible()) { //do what you want } } } } 。然后,您可以检查哪些片段是可见的,并相应地执行您想要的操作。 这段代码在我的活动中:

{{1}}