我想禁用片段类中的后退按钮。在这个片段中,onBackPressed()
似乎不起作用。我怎么能禁用后退按钮呢?
这是我的示例代码:
public class Login extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
,Bundle savedInstanceState) {
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.login, null);
return root;
}
public void onBackPressed() {
}
}
发布于 2013-07-19 14:13:16
您必须重写父FragmentActivity类的onBackPressed。因此,将您的代码放在父FragmentActivity中。或者,您可以使用以下代码调用父方法:
public void callParentMethod(){
getActivity().onBackPressed();
}
在FragmentActivity中,覆盖onBackPressed方法且不调用其超类来禁用back按钮。
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
发布于 2016-03-21 18:40:02
在您的oncreateView()方法中,您需要编写以下代码,并且在KEYCODE_BACk中,如果返回为true,那么它将停止特定片段的后退按钮选项
View v = inflater.inflate(R.layout.xyz, container, false);
//Back pressed Logic for fragment
v.setFocusableInTouchMode(true);
v.requestFocus();
v.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
}
return false;
}
});
发布于 2015-06-29 19:36:52
在您的家长活动中
@Override
public void onBackPressed() {
Fragment f = getSupportFragmentManager().findFragmentById(R.id.content_frame);
if (f instanceof yourfragment) {//the fragment on which you want to handle your back press
Log.i("BACK PRESSED", "BACK PRESSED");
}else{
super.onBackPressed();
}
}
https://stackoverflow.com/questions/17738966
复制相似问题