我有一个带有片段和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值按回时隐藏一些特定的视图。有关如何操作此功能的任何建议?谢谢!
答案 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}}