禁用从片段按下后退按钮

Zaw*_*tet 3 android android-fragments

我的应用程序有一个包含很多片段的活动.我想在某些片段中禁用后退按钮.我尝试使用以下代码.但它不起作用.

在主要活动中:

@Override
public void onBackPressed() {
        super.onBackPressed();
        OrderFragment.onBackPress();
}
Run Code Online (Sandbox Code Playgroud)

在片段中,

public static void onBackPressed()
{
    Log.d(TAG,"It listen");
}
Run Code Online (Sandbox Code Playgroud)

我有日志消息但是,如何禁用片段中的后退按钮.

小智 7

您应该保留对要禁用/处理主活动的新闻事件的片段的引用:

class MainActivity{

    OrderFragment mOrderFragment;

    @Override
    public void onBackPressed() {
        if(mOrderFragment.isVisible())
            mOrderFragment.onBackPressed();
        else
            super.onBackPressed();
    }

}
Run Code Online (Sandbox Code Playgroud)

在OrderFragment中:

public void onBackPressed() {
    //handle back press event
}
Run Code Online (Sandbox Code Playgroud)


Raj*_*mar 5

在您的oncreateView()方法中,您需要编写此代码,并且在KEYCODE_BACk中return应该为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)