Я написал составной компонент и добавлял пользовательский прослушиватель для реагирования.Пользовательский прослушиватель для составного компонента
Внутри класса для составного компонента, который использует файл xml.
public class VerticalCounterBlock extends LinearLayout {
public interface VerticalCounterBlockListener {
public void onCountChanged(int newCount);
}
private VerticalCounterBlockListener mVerticalCounterBlockListener = null;
public void setVerticalCounterBlockListener(VerticalCounterBlockListener listener){
mVerticalCounterBlockListener = listener;
}
// ... Other functions
}
Я получил мой интерфейс, я получил слушатель, и я получил сеттер, и я привлечь слушатель, как это в кнопке я имею в составном компоненте. Я могу видеть, что тост, который показывает, когда я проверить
addBtn = (Button)findViewById(R.id.btn_addcount);
addBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
count++;
counttv.setText(String.format("%1$d", count));
Toast.makeText(getContext(), "VCB", Toast.LENGTH_SHORT).show();
if(mVerticalCounterBlockListener != null) {
mVerticalCounterBlockListener.onCountChanged(count);
}
}
});
В моей основной деятельности
m20_vcb = (VerticalCounterBlock) findViewById(R.id.vcb_m20);
m20_vcb.setVerticalCounterBlockListener(new VerticalCounterBlock.VerticalCounterBlockListener() {
@Override
public void onCountChanged(int newCount) {
increasePreachCountTotal();
Toast.makeText(CounterActivity.this, String.format("%1$d", newCount), Toast.LENGTH_SHORT).show();
}
});
Я не вижу, что тост и не участвовать вызов функции. Что мне не хватает?
Все хорошие предложения. Я попробовал свой первый и использовал отдельный класс интерфейса. Это не помогло, поэтому я вернулся к своим соображениям и предпочтениям в организации. Может ли предложение 2/3 вызвать проблемы со слушателем? Я использовал только тост, потому что мой отладчик разорился и продолжал отключать. –
Сегмент кода 2 показывает сохранение публичного слушателя внутри вашей «Деятельности». Вы тоже это попробовали? –
Я пробовал, но это не сработало. Есть ли что-то с линейной компоновкой, которая предотвратила бы работу? –