这是我的班级名称
public class PrimaryFragment extends Fragment implements OnRestartRequest {
@Override
public void onBackPressed() {
if (mCardStackLayout.isCardSelected()) {
mCardStackLayout.restoreCards();
} else {
super.onBackPressed();
}
}
此行有误:super.onBackPressed();
我不知道片段类在后退按钮上的问题是什么。
答案 0 :(得分:4)
onBackPressed()
中没有Fragment
方法。您可以执行类似getActivity().onBackPressed()
中的Fragment
调用。
答案 1 :(得分:3)
片段没有我们用于活动的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);
答案 2 :(得分:1)
您应该从内部调用getActivity()
片段,如下所示:
getActivity().onBackedPressed();
注意:请注意您导入了正确的getActivity()
,如果您使用android.support.v4.app.Fragment
,则需要导入正确的包。
答案 3 :(得分:0)
Fragmetns没有自己的OnBackPressed
,你必须从包含该片段的父Actvitiy处理他们的交易。
示例://在Fragmetn上的父活动中
@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;
}
}