2
我在我的應用程序創建一個自定義對話框,我要添加按鈕,點擊可觀察像這樣:NPE訂閱對話框按鈕,當點擊
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
是在訂閱的點空。
我知道一個可能的解決辦法是在對話框中使用PublishSubject
,而不是試圖直接訂閱按鈕click observable,但這看起來像是一個非常不雅的解決方案。
在此先感謝您的任何建議!
謝謝,我不知道創建方法!但是,它只支持api 21以上,我需要支持17以上。你知道是否有辦法在api level 21以下做到這一點? – DCoutts
您可以採取另一種方法,處理BasicDialog中的點擊,因此您將在Dialog的onCreate() – Tuby
@DCoutts中訂閱,對於低於21的API,您必須執行'basicDialog.show()',之後執行'basicDialog.button1Clicks() '。 – azizbekian