2016-06-30 11 views
0

私たちのコントロール内で発生したイベントに基づいてObservableを作成するのは簡単です。ビュー(ボタンクリック、アタッチ/デタッチイベント)または非ビュー(RESTリクエスト)からのもので、Observableをラップするのは比較的簡単で簡単です。フレームワークコールバックイベントに基づいてObservableを作成するにはどうすればよいですか?

しかし、フレームワークイベントについてはどうですか。

たとえば、Observableを作成して、[戻る]ボタンをサブスクライバに送信する場合、どうすればいいですか?

私はActivityからコールバックメソッドの形で来る知るようになってきましたボタンの押下をバック扱うには二つの方法:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // do something on back. 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

私はにこれを変換することができる方法
@Override 
public void onBackPressed() { 
    // do something on back. 
    return; 
} 

Observable

答えて

2

この目的でSubjectsを使用できます。例:

class MainActivity extends Activity { 

    private final Subject<Void, Void> subject = PublishSubject.create(); 

    @Override 
    public void onBackPressed() { 
     subject.onNext(null); 
     super.onBackPressed(); 
    } 

    public Observable<Void> listenToBackPress() { 
     return subject; 
    } 
} 
関連する問題