Android 在非活动类中控制后退按钮?

Android 在非活动类中控制后退按钮?,android,android-fragments,fragment,back-button,Android,Android Fragments,Fragment,Back Button,我有一个带有片段的Actionbar应用程序和一个TabFragment extends Fragment类,我在其中自定义片段的功能 我希望能够控制后退按钮的功能 @Overriding onBackPressed() 因为我没有参加活动,所以不能工作, 也不会 我的目标是在基于布尔变量的真/假值按下back键时隐藏一些特定视图。有没有关于如何操作此功能的建议?谢谢 我遇到了与您相同的问题,但我意识到您必须在运行片段的活动中处理后退按钮。您需要覆盖活动代码中的onBackPressed()

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

我希望能够控制后退按钮的功能

@Overriding onBackPressed() 
因为我没有参加活动,所以不能工作, 也不会

我的目标是在基于布尔变量的真/假值按下back键时隐藏一些特定视图。有没有关于如何操作此功能的建议?谢谢


我遇到了与您相同的问题,但我意识到您必须在运行片段的活动中处理后退按钮。您需要覆盖活动代码中的
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
            }
        }
    }
}

在活动的onBackPress中,检查哪个片段是可见的,并相应地执行所需的操作。
@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
            }
        }
    }
}