如何在popbackstack时清除编辑文本值

时间:2015-12-23 15:11:42

标签: android android-fragments android-edittext

我在片段A中有一个edittext,用于类别列表中的静态搜索。当我用片段B替换片段A并单击后退按钮edittext仍然显示我在替换片段之前写的内容。以下是我尝试过FragmentA' oncreateviewonactivitycreated的内容。但那不起作用(我希望在调用edit text时将popbackstack值设置为空字符串:

 if (customTextWatcher == null)
    {
        customTextWatcher = new CustomTextWatcher();
        searchET.addTextChangedListener(customTextWatcher);
    }
    else {
        searchET.removeTextChangedListener(customTextWatcher);
        searchET.setText("");
        searchET.addTextChangedListener(customTextWatcher);
    }

有什么想法吗?

谢谢,

3 个答案:

答案 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);
        }