我在片段A中有一个edittext
,用于类别列表中的静态搜索。当我用片段B替换片段A并单击后退按钮edittext
仍然显示我在替换片段之前写的内容。以下是我尝试过FragmentA' oncreateview
和onactivitycreated
的内容。但那不起作用(我希望在调用edit text
时将popbackstack
值设置为空字符串:
if (customTextWatcher == null)
{
customTextWatcher = new CustomTextWatcher();
searchET.addTextChangedListener(customTextWatcher);
}
else {
searchET.removeTextChangedListener(customTextWatcher);
searchET.setText("");
searchET.addTextChangedListener(customTextWatcher);
}
有什么想法吗?
谢谢,
答案 0 :(得分:1)
显示第二个片段时,可以清除EditText。在其他地方,您可以截取onBackPressed
到片段中(方法onBackPressed
实际上被调用到活动中,您应该将该信息传递给当前显示的片段)。
我认为第一个是更清洁的解决方案。
答案 1 :(得分:1)
什么触发片段从A切换到B?这就是我用逻辑来清除EditText的地方。例如,如果用户按下触发片段切换的按钮,请清除View.OnClickListener的onClick(视图视图)方法中的EditText。
EditText et = (EditText) root.findViewById(...);
Button b1 = (Button) root.findViewById(....);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
et.setText("");
// logic for switching fragment A to B
}
}
答案 2 :(得分:0)
用于清除在弹出/反压后用户会返回的片段的UI小部件
@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
super.onViewStateRestored(savedInstanceState);
if (searchEdittext != null) // for resetting this edittext
searchEdittext.setText(BLANK_STRING);
}