2016-06-08 78 views
1

当新片段添加到当前片段的顶部时,我想要隐藏编辑文本的错误消息,但是新的时候没有调用当前片段的方法片段被添加在顶部,在相同的活动。当在同一活动中添加新片段时,调用当前片段的哪个方法

谢谢。

我只想隐藏添加在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(); 
} 

但这些方法中的非方法在使用给定方法添加另一个片段(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(); 
} 
+0

看起来你要我们写一些代码给你。尽管许多用户愿意为遇险的编码人员编写代码,但他们通常只在海报已尝试自行解决问题时才提供帮助。证明这一努力的一个好方法是包含迄今为止编写的代码,示例输入(如果有的话),期望的输出以及实际获得的输出(控制台输出,回溯等)。您提供的细节越多,您可能会收到的答案就越多。检查[FAQ]和[问]。 – yennsarah

+0

我编辑了一个问题,请现在检查它。 –

+0

为什么不在addFragment方法中使用现有片段A的对象来调用片段A的公共方法来移除mobileNumEditText.setError(null); – Herry

回答

0

请通过fragment lifecycle并自行检查。

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

+0

我检查了片段的生命周期,但是找不到添加新片段时调用的任何当前片段方法。 –

+0

显示您重写方法的片段代码 –

0

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

+0

但是,在顶部添加另一个片段时,不会调用片段的onPause()方法。 –

相关问题