Jel*_*ean 14 java eclipse android
我想禁用片段类中的后退按钮.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() {
}
}
Run Code Online (Sandbox Code Playgroud)
Gun*_*han 17
您必须覆盖父FragmentActivity类的onBackPressed.因此,将您的代码放在父FragmentActivity中.或者您可以使用以下方法调用父方法:
public void callParentMethod(){
getActivity().onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)
在FragmentActivity中覆盖onBackPressed方法而不调用其超类来禁用后退按钮.
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
Run Code Online (Sandbox Code Playgroud)
May*_*ini 11
在您的父活动中
@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();
}
}
Run Code Online (Sandbox Code Playgroud)
在你的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;
}
});
Run Code Online (Sandbox Code Playgroud)
这是您可以在 Fragment 类中编写以自定义后退按钮按下的代码。
public class MyFragment extends Fragment{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
@Override
public void handleOnBackPressed() {
// Handle the back button even
Log.d("BACKBUTTON", "Back button clicks");
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
}
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读和研究更多
我知道为时已晚,在片段 onCreate
val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
Log.d("tag","back button pressed") // Handle the back button event
}
callback.isEnabled
Run Code Online (Sandbox Code Playgroud)
这是您可以onBackPressed()使用新的活动回调管理片段的新方法:
// Disable onBack click
requireActivity().onBackPressedDispatcher.addCallback(this) {
// With blank your fragment BackPressed will be disabled.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30182 次 |
| 最近记录: |