2016-06-08 1 views
1

Я хочу скрыть сообщение об ошибке редактирования текста, когда новый фрагмент добавлен поверх текущего фрагмента, но метод текущего фрагмента не вызывается, когда новый фрагмент добавляется сверху, в той же активности.Какой метод текущего фрагмента вызывается, когда новый фрагмент добавляется в ту же активность

Спасибо.

Я просто хочу скрыть сообщение об ошибке вида 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] и [ask]. – yennsarah

+0

Я отредактировал вопрос, пожалуйста, проверьте его сейчас. –

+0

Почему вы не используете объект существующего фрагмента A в методе addFragment для вызова общедоступного метода фрагмента A для удаления mobileNumEditText.setError (null); – Herry

ответ

0

Просьба пройти через fragment lifecycle и проверить это самостоятельно.

Я предлагаю вам переопределить все методы жизненного цикла фрагмента в вашем фрагменте и разместить точки останова в каждом из методов и проверить его сами.

+0

Я проверил жизненный цикл фрагмента, но не смог найти какой-либо из методов текущего фрагмента, вызванный при добавлении нового фрагмента. –

+0

Показать код фрагмента, где вы переопределяете методы –

0

Если я правильно понял, вы ищете метод onPause(), который вызывается для фрагмента, который был заменен другим.

+0

Но метод фрагмента onPause() не вызывается при добавлении другого фрагмента сверху. –

0

Текущий фрагмент будет затронут только в том случае, если он удален или заменен. Простое добавление нового фрагмента будет просто отображать новый фрагмент поверх текущего фрагмента и не вызывать метод жизненного цикла текущего фрагмента.

В соответствии с вашей проблемой лучше скрыть сообщение об ошибке редактирования текста перед транзакцией фрагментов.

Проверить для улицы https://androidlearnersite.wordpress.com/2017/02/27/fragment-lifecycle-during-fragment-transaction/

Смежные вопросы