在片段中实现 onBackPressed()



所以在我的片段中,我有一个工具栏后退按钮,但我也有手机的后退按钮。当我点击工具栏时,我只需要调用活动的onBackPressed,当我点击手机的后退按钮时,需要发生一些特定的功能。如何覆盖活动中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 "";
}
}

最新更新