我想禁用片段类中的后退按钮。 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() {
}
}
答案 0 :(得分:17)
您必须覆盖父FragmentActivity类的onBackPressed。因此,将您的代码放在父FragmentActivity中。或者您可以使用以下方法调用父方法:
public void callParentMethod(){
getActivity().onBackPressed();
}
FragmentActivity中的覆盖onBackPressed方法而不调用其超类来禁用后退按钮。
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
答案 1 :(得分:6)
在你的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;
}
});
答案 2 :(得分:4)
在您的父级活动
中@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();
}
}
答案 3 :(得分:4)
这是您可以在Fragment类中编写的代码,用于自定义后退按钮的按下。
<tr>
<?php
foreach($disname as $traveler)
{
<td><?php echo $traveler['discname']; ?></td>
<?php
}
?>
</tr>
您可以阅读和研究有关此HERE
的更多信息答案 4 :(得分:3)
更改
public void onBackPressed() {
}
到
@Override
public void onBackPressed() {
super.onBackPressed()
}
或强>
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
}
return super.onKeyDown(keyCode, event);
}
答案 5 :(得分:3)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ( keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
return;
}
答案 6 :(得分:2)
这是您可以通过新的活动回拨来分段管理onBackPressed()
的新方法:
// Disable onBack click
requireActivity().onBackPressedDispatcher.addCallback(this) {
// With blank your fragment BackPressed will be disabled.
}
答案 7 :(得分:0)
我知道为时已晚, 片段onCreate
```
val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
Log.d("tag","back button pressed") // Handle the back button event
}
callback.isEnabled
```
答案 8 :(得分:0)
如果您想在没有任何按钮操作的情况下进行片段分割,可以尝试阻止取消片段。
在您的片段方法中添加此
this.setCancelable(false);
答案 9 :(得分:0)
只需放置一个透明视图并为其设置 onClickListener