Android 在片段中实现onBackPressed()
因此,在我的片段中,我有一个工具栏后退按钮,但我也有手机的后退按钮。当我点击工具栏上的一个,我只需要调用活动的onBackPressed,当我点击手机的back按钮,一些特定的功能需要发生。如何在活动中重写Android 在片段中实现onBackPressed(),android,Android,因此,在我的片段中,我有一个工具栏后退按钮,但我也有手机的后退按钮。当我点击工具栏上的一个,我只需要调用活动的onBackPressed,当我点击手机的back按钮,一些特定的功能需要发生。如何在活动中重写onBackPressed()方法来处理这两种情况并在片段中使用它 你有办法追踪碎片吗? 假设在加载时设置了片段标记 int _contentContainerId; String sFragmentTag // Get the fragmen
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 "";
}
}
您可以通过检查系统硬件后退按钮来实现这一点,如下所述:这是否回答了您的问题?