目前,我的主要活动有一个描述字段,当用户点击描述时会打开一个片段。在片段上有一个文本字段和一个按钮,当我点击按钮时,我想关闭片段并返回我的活动。
我怎样才能做到这一点?
我已经在我的片段中添加了一个onClickListener来捕获按钮上的点击。打印toast消息,但不删除/关闭片段。
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
我在片段的onCreateView中有onClickListener。这是对的吗?
提前致谢!
我正在添加我的片段:
descDismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getContext(), "Dismissed", Toast.LENGTH_LONG).show();
getActivity().getFragmentManager().popBackStackImmediate();
}
});
答案 0 :(得分:8)
首先尝试将片段添加到backstack中,如下所示
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(..............);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
然后删除这样的片段: -
FragmentManager fm = getActivity().getSupportFragmentManager();
if(fm.getBackStackEntryCount()>0) {
fm.popBackStack();
}
删除所有片段
FragmentManager fm = getActivity().getSupportFragmentManager();
for (int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
答案 1 :(得分:1)
使用getFragmentManager()。popBackStack();
答案 2 :(得分:0)
试试这个
getActivity().getSupportFragmentManager().popBackStack();
答案 3 :(得分:0)
尝试使用以下代码:
public void fragmentReplace() {
if (getSupportFragmentManager().findFragmentByTag(new TermsAndConditionFragment().getClass().getName()) != null) {
getSupportFragmentManager().popBackStack(new TermsAndConditionFragment().getClass().getName(),
FragmentManager.POP_BACK_STACK_INCLUSIVE);
} else {
super.onBackPressed();
}
在主要的Activity中的descDismiss按钮clickListener插入代码:
descDismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getContext(), "Dismissed", Toast.LENGTH_LONG).show();
fragmentReplace();
}
});
答案 4 :(得分:0)
这里是我的答案/ Mi respuesta
我添加片段的方式/格式片段:
/**
* @brief Macros to get integer build timestamp:
* __DATE_TIME_Y2K__ seconds since 2000-01-01,00:00:00
* __DATE_TIME_UNIX__ seconds since 1970-01-01 00:00:00
*
* 01234567890 01234567
* __DATE__ "Jul 27 2019" __TIME__ "12:34:56"
*/
#ifndef __DATE_TIME_H__
#define __DATE_TIME_H__
#define Y2K_UNIX_EPOCH_DIFF 946684800U
#define YEARS ((__DATE__[10] - '0' + (__DATE__[9] - '0') * 10))
#define DAY_OF_MONTH ((__DATE__[5] - '0') \
+ (((__DATE__[4] > '0')? __DATE__[4] - '0': 0) * 10) - 1)
#define DAY_OF_YEAR ((DAY_OF_MONTH) + \
( /* Jan */ (__DATE__[0] == 'J' && __DATE__[1] == 'a')? 0: \
/* Feb */ (__DATE__[0] == 'F' )? 31: \
/* Mar */ (__DATE__[0] == 'M' && __DATE__[2] == 'r')? 59: \
/* Apr */ (__DATE__[0] == 'A' && __DATE__[1] == 'p')? 90: \
/* May */ (__DATE__[0] == 'M' )? 120: \
/* Jun */ (__DATE__[0] == 'J' && __DATE__[2] == 'n')? 151: \
/* Jul */ (__DATE__[0] == 'J' )? 181: \
/* Aug */ (__DATE__[0] == 'A' )? 212: \
/* Sep */ (__DATE__[0] == 'S' )? 243: \
/* Oct */ (__DATE__[0] == 'O' )? 273: \
/* Nov */ (__DATE__[0] == 'N' )? 304: \
/* Dec */ 334 ))
#define LEAP_DAYS (YEARS / 4 + 1 + ((YEARS % 4 == 0 && DAY_OF_YEAR > 58)? 1 : 0) )
#define __DATE_TIME_Y2K__ ( (YEARS * 365 + LEAP_DAYS + DAY_OF_YEAR ) * 86400 \
+ ((__TIME__[0] - '0') * 10 + __TIME__[1] - '0') * 3600 \
+ ((__TIME__[3] - '0') * 10 + __TIME__[4] - '0') * 60 \
+ ((__TIME__[6] - '0') * 10 + __TIME__[7] - '0') )
#define __DATE_TIME_UNIX__ ( __DATE_TIME_Y2K__ + Y2K_UNIX_EPOCH_DIFF )
#endif /* __DATE_TIME_H__ */
我的清除方式/ Mi manera de eliminarlos
fragmentTransaction = fragmentManager.beginTransaction();
frmInicio fragment = new frmInicio();
fragmentTransaction.add(R.id.content_menu_layout, fragment,"frm_inicio");
fragmentTransaction.commit();