Я создал настраиваемый диалог в своем приложении, и я хочу добавить наблюдаемые кнопки, например:
public class BasicDialog extends android.app.Dialog {
@BindView(R.id.button1)
TextView button1;
@BindView(R.id.button2)
TextView button2;
public BasicDialog(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_basic);
...
ButterKnife.bind(this);
}
public Observable<Object> button1Clicks() {
return RxView.clicks(button1);
}
public Observable<Object> button2Clicks() {
return RxView.clicks(button2);
}
}
Затем я создаю свой диалог и подписываюсь на нажатие кнопки 1 в моем действии следующим образом:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
BasicDialog basicDialog = new BasicDialog(this);
basicDialog.button1Clicks()
.subscribe(__ -> doStuff());
}
Это приводит к исключению нулевого указателя, поскольку button1
имеет значение NULL в точке подписки.
Я знаю, что возможным исправлением этого было бы использование PublishSubject
в диалоговом окне вместо попытки подписаться непосредственно на наблюдаемую кнопку, но это кажется очень неэлегантным решением.
Спасибо заранее за любые предложения!