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回のクリックを私のダイアログを作成して、ボタンにサブスクライブこのように私の活動:button1
は、サブスクリプションの時点でnullであるよう
@Override
protected void onCreate(Bundle savedInstanceState) {
...
BasicDialog basicDialog = new BasicDialog(this);
basicDialog.button1Clicks()
.subscribe(__ -> doStuff());
}
これは、nullポインタ例外が発生します。
これは可能な修正を知っていますが、ボタンをクリックしてobservableに直接購読するのではなく、ダイアログ内でPublishSubject
を使用することになりますが、これは非常に面白い解決策のようです。
ご協力いただきありがとうございます。
ありがとう、私は作成方法について知りませんでした!しかし、それはapi 21上でのみサポートされており、私は17以上をサポートする必要があります。 apiレベル21の下でこれを行う方法があるかどうか知っていますか? – DCoutts
別のアプローチを取ってBasicDialog内のクリックを処理することができますので、DialogのonCreate() – Tuby
@DCouttsにサブスクライブします。下位のAPIでは 'basicDialog.show()'を実行し、その後は 'basicDialog.button1Clicks() '。 – azizbekian