在同一活动中添加新片段时,将调用当前片段的哪种方法

时间:2016-06-08 12:06:06

标签: android android-fragments

我希望隐藏编辑文本的错误信息,当新片段添加到当前片段之上时,但是当在同一活动中添加新片段时,不会调用当前片段的方法。

感谢。

我只想隐藏在fragmentA上添加的EditText视图的错误消息,如下所示。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.um_fragment_nav_signup_frag, container, false);

    mobileNumEditText= (EditText) view.findViewById(R.id.et_nav_mobile);

    mobileNumEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            mobileNumEditText.setError(null);
        }
    });

    return view;
}

@Override
public void onHiddenChanged(boolean hidden) {
    mobileNumEditText.setError(null);
    super.onHiddenChanged(hidden);
}

@Override
public void onPause() {
    mobileNumEditText.setError(null);
    super.onPause();
}

但是在使用给定方法在Same活动中添加另一个片段(FragmentB)时调用了这些方法。

@Override
public final void addFragment(Fragment fragment, int containerId,
                              boolean addToBackStack) {
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.add(containerId, fragment, fragment.getClass().getSimpleName());
    if (addToBackStack) {
        ft.addToBackStack(null);
    }
    ft.commit();
}

3 个答案:

答案 0 :(得分:0)

请浏览fragment lifecycle并自行查看。

我建议你覆盖片段中的所有片段生命周期方法,并在每个方法中放置断点并自行检查。

答案 1 :(得分:0)

如果我理解正确,你正在寻找onPause()方法,该方法被替换为另一个的片段调用。

答案 2 :(得分:0)

当前碎片只有在被移除或更换时才会受到影响。简单地添加新片段只会在当前片段上显示新片段,并且不会调用当前片段的生命周期方法。

根据您的问题,最好在执行片段事务之前隐藏编辑文本的错误消息。

退房 -  https://androidlearnersite.wordpress.com/2017/02/27/fragment-lifecycle-during-fragment-transaction/