这是我的类名
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;
}
}