2016-06-08 29 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()方法。 –

相關問題