如何处理onBackPressed()在片段



这是我的类名

public class PrimaryFragment extends Fragment implements OnRestartRequest {
    @Override
    public void onBackPressed() {
        if (mCardStackLayout.isCardSelected()) {
            mCardStackLayout.restoreCards();
        } else {
            super.onBackPressed();
        }
    }

本行错误:super.onBackPressed();

我不知道fragment class的on back pressed button有什么问题

Fragment中没有onBackPressed()方法。您可以从Fragment调用getActivity().onBackPressed()

片段没有onBackPress()方法,因为我们有活动。我更喜欢使用下面的代码处理背压,希望它能帮助你:

 private void handleBackPress(View view) {

        view.setFocusableInTouchMode(true);
        view.requestFocus();
        view.setOnKeyListener( new View.OnKeyListener()
        {
            @Override
            public boolean onKey( View v, int keyCode, KeyEvent event )
            {
                if( keyCode == KeyEvent.KEYCODE_BACK )
                {
                    cancelCountDownTimerAndSaveValues();
                    if (Constants.Fragments.CurrentFragment != null)
                    {
                         getActivity().getSupportFragmentManager().popBackStack();
                    }
                    return true;
                }
                return false;
            }
        } );
    }

这里的视图是你从

得到的片段的主视图

View view = inflater.inflate(R.layout.xxxxx, container, false);

你应该从你的片段内部调用getActivity():

getActivity().onBackedPressed();

注意:注意你导入正确的getActivity(),如果你使用android.support.v4.app.Fragment,你需要导入正确的包

fragment没有自己的OnBackPressed,你必须从包含该fragment的父activity处理它们的事务。

示例://在Parent Activity on fragment

@Override
public void onBackPressed() {
    // This will get you total fragment in the backStack
    int count = getFragmentManager().getBackStackEntryCount();
    switch(count){
        case 0:
            super.onBackPressed();
            break;
        case 1:
            // handle back press of fragment one
            break;
        case 2:
            // and so on for fragment 2 etc
            break;
        default:
            getFragmentManager().popBackStack();
            break;
    }
}

最新更新