Android 在片段中实现onBackPressed()

Android 在片段中实现onBackPressed(),android,Android,因此,在我的片段中,我有一个工具栏后退按钮,但我也有手机的后退按钮。当我点击工具栏上的一个,我只需要调用活动的onBackPressed,当我点击手机的back按钮,一些特定的功能需要发生。如何在活动中重写onBackPressed()方法来处理这两种情况并在片段中使用它 你有办法追踪碎片吗? 假设在加载时设置了片段标记 int _contentContainerId; String sFragmentTag // Get the fragmen

因此,在我的片段中,我有一个工具栏后退按钮,但我也有手机的后退按钮。当我点击工具栏上的一个,我只需要调用活动的onBackPressed,当我点击手机的back按钮,一些特定的功能需要发生。如何在活动中重写
onBackPressed()
方法来处理这两种情况并在片段中使用它

你有办法追踪碎片吗? 假设在加载时设置了片段标记

        int _contentContainerId;
        String sFragmentTag

        // Get the fragment manager
        FragmentManager fm = getSupportFragmentManager();

        // Change the container based on the parameters
        _contentContainerId = (nViewId == 0) ? R.id.container_application : nViewId;

        // Check if a fragment already exists. 
        Fragment currentFragment = fm.findFragmentById(_contentContainerId);

        // if it does not exist, then add the fragment, else replace it
        if (currentFragment == null) {
            fragTrans.add(_contentContainerId, fragmentObject, sFragmentTag);
        } else {
            fragTrans.replace(_contentContainerId, fragmentObject, sFragmentTag);
        }
在活动中,哪个是片段的容器

@Override
public void onBackPressed() {
    String currentFrag = getCurrentFragment(this, Constants.FRAG_CONTAINER_ID);

    if (currentFrag.equalsIgnoreCase()) {
        //your backpress logic for the fragment
    } else if (...) {

    } else {
        //normal backpress
        super.onBackPressed();
    }
}
}

public String getCurrentFragment(Context ctx, int containerId) {
    Fragment currentFrag;
    currentFrag = ((FragmentActivity) ctx).getSupportFragmentManager().findFragmentById(containerId);
    if (currentFrag != null) {
        String currentFragTag = currentFrag.getTag();
        if (StringUtils.isNotBlank(currentFragTag))
            return currentFragTag;
        else
            return "";
    } else {
        return "";
    }
}

您可以通过检查系统硬件后退按钮来实现这一点,如下所述:这是否回答了您的问题?