2017-02-08 5 views
0

У меня проблема с ButterKnife in Fragments.ButterKnife bind Fragments issue

Например, у меня есть 2 фрагмента, первый фрагмент имеет кнопку посередине на виду. Я связываю это с:

unbinder = ButterKnife.bind(this, rootView); 

Тогда я реализую @BindView и @OnClick:

@BindView(R.id.btnSignUp) 
Button btnSignUp; 

@OnClick(R.id.btnSignUp) 
public void signUpClick() { 

На SignUpClick текущего фрагмента заменить на новый:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
transaction.setAllowOptimization(true); 
transaction.replace(R.id.frame_layout, fragment); 
transaction.addToBackStack(String.valueOf(fragment.getClass())); 
transaction.commit(); 

Второй фрагмент также включал кнопку верхней части экрана, с реализацией BindView.

Проблема - если я нажимаю в середине экрана с пустой областью, signUpClick уволят, не знают, где моя ошибка или это ошибка, которую нож для масла

+0

как насчет того, чтобы вывести предыдущий фрагмент с помощью 'transaction.popBackStack();'. Вызовите его перед добавлением нового фрагмента. –

ответ

0

Его, потому что фрагменты помещаются в backstack. Поэтому, если второй фрагмент не принимает действие click, он передается первому фрагменту.

Возможно, вы также должны добавить кнопку добавления кликов на вторую кнопку фрагмента.

0

Просто добавьте прослушиватель кликов ко второму фрагменту с пустым телом. Предполагается, что R.id.root_fragment2 является идентификатором корневого макета второго фрагмента.

@OnClick(R.id.root_fragment2) 
public void onRootClicked() { 
} 

Теперь второй фрагмент будет потреблять клики и не передаст его фрагменту ниже.

0

Второй фрагмент находится в верхней части экрана, но когда происходит событие касания, если второй фрагмент не потребляет событие, первый фрагмент все равно может принять событие касания. Фрагмент имеет вид корня, вы можете установить вид следующим образом: rootView.setClickable (true);