diff --git a/app/build.gradle b/app/build.gradle index 60b95e6..b582055 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,6 +20,9 @@ targetCompatibility 1.8 sourceCompatibility 1.8 } + dataBinding { + enabled = true; + } } dependencies { @@ -43,4 +46,9 @@ // OKHttp implementation 'com.squareup.okhttp3:okhttp:3.8.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0' + + // Android Architecture Components for Lifecycles, LiveData, and ViewModel + compile "android.arch.lifecycle:runtime:1.0.3" + compile "android.arch.lifecycle:extensions:1.0.0" + annotationProcessor "android.arch.lifecycle:compiler:1.0.0" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2d97e40..01402e6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,20 +2,25 @@ + + - + + + \ No newline at end of file diff --git a/app/src/main/java/j4ckall/rxflux/App.java b/app/src/main/java/j4ckall/rxflux/App.java index 381edd7..f8d00e9 100644 --- a/app/src/main/java/j4ckall/rxflux/App.java +++ b/app/src/main/java/j4ckall/rxflux/App.java @@ -3,6 +3,7 @@ import android.app.Application; import j4ckall.rxflux.lib.flux.Dispatcher; +import j4ckall.rxflux.repository.RegistrationRepository; /** * Application Class @@ -13,6 +14,7 @@ private static App instance = null; private static final Dispatcher dispatcher = new Dispatcher(); + private static final RegistrationRepository registrationRepository = new RegistrationRepository(); @Override public void onCreate() { @@ -27,4 +29,8 @@ public static Dispatcher getDispatcher() { return dispatcher; } + + public static RegistrationRepository getRegistrationRepository() { + return registrationRepository; + } } diff --git a/app/src/main/java/j4ckall/rxflux/api/RegistrationService.java b/app/src/main/java/j4ckall/rxflux/api/RegistrationService.java new file mode 100644 index 0000000..e6d72bd --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/api/RegistrationService.java @@ -0,0 +1,19 @@ +package j4ckall.rxflux.api; + +import io.reactivex.Single; +import j4ckall.rxflux.ui.registration.Account; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.POST; + +/** + * アカウント登録のAPI + * + * @author matsumoto_k + */ +public interface RegistrationService { + + @FormUrlEncoded + @POST("accounts") + Single postAccounts(@Field("userName") String userName); +} diff --git a/app/src/main/java/j4ckall/rxflux/lib/architecture/BaseViewModel.java b/app/src/main/java/j4ckall/rxflux/lib/architecture/BaseViewModel.java new file mode 100644 index 0000000..7f2bd01 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/lib/architecture/BaseViewModel.java @@ -0,0 +1,36 @@ +package j4ckall.rxflux.lib.architecture; + +import android.arch.lifecycle.Lifecycle; +import android.arch.lifecycle.LifecycleObserver; +import android.arch.lifecycle.OnLifecycleEvent; + +/** + * BaseViewModel + * + * @author matsumoto_k + */ +public class BaseViewModel implements LifecycleObserver { + @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) + public void onCreate() { + } + + @OnLifecycleEvent(Lifecycle.Event.ON_START) + public void onStart() { + } + + @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) + public void onResume() { + } + + @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) + public void onPause() { + } + + @OnLifecycleEvent(Lifecycle.Event.ON_STOP) + public void onStop() { + } + + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + public void onDestroy() { + } +} diff --git a/app/src/main/java/j4ckall/rxflux/lib/flux/ActionCreater.java b/app/src/main/java/j4ckall/rxflux/lib/flux/ActionCreater.java index a24e978..c853ace 100644 --- a/app/src/main/java/j4ckall/rxflux/lib/flux/ActionCreater.java +++ b/app/src/main/java/j4ckall/rxflux/lib/flux/ActionCreater.java @@ -3,6 +3,8 @@ import android.support.annotation.NonNull; +import j4ckall.rxflux.App; + /** * Actionを作成するHelper * DispatcherにActionを流す @@ -13,8 +15,8 @@ private final Dispatcher dispatcher; - public ActionCreater(Dispatcher dispatcher) { - this.dispatcher = dispatcher; + public ActionCreater() { + this.dispatcher = App.getDispatcher(); } /** diff --git a/app/src/main/java/j4ckall/rxflux/lib/flux/Store.java b/app/src/main/java/j4ckall/rxflux/lib/flux/Store.java index 202a101..4b82ecc 100644 --- a/app/src/main/java/j4ckall/rxflux/lib/flux/Store.java +++ b/app/src/main/java/j4ckall/rxflux/lib/flux/Store.java @@ -8,6 +8,7 @@ import io.reactivex.schedulers.Schedulers; import io.reactivex.subjects.PublishSubject; import io.reactivex.subjects.Subject; +import j4ckall.rxflux.App; /** @@ -26,8 +27,8 @@ private final Dispatcher dispatcher; private final CompositeDisposable subscriptions = new CompositeDisposable(); - public Store(Dispatcher dispatcher) { - this.dispatcher = dispatcher; + public Store() { + this.dispatcher = App.getDispatcher(); } private void observe(Scheduler scheduler, Consumer subscriber) { diff --git a/app/src/main/java/j4ckall/rxflux/repository/RegistrationRepository.java b/app/src/main/java/j4ckall/rxflux/repository/RegistrationRepository.java new file mode 100644 index 0000000..61fda6d --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/repository/RegistrationRepository.java @@ -0,0 +1,31 @@ +package j4ckall.rxflux.repository; + +import io.reactivex.Single; +import j4ckall.rxflux.api.RegistrationService; +import j4ckall.rxflux.ui.registration.Account; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +import retrofit2.converter.gson.GsonConverterFactory; + +/** + * Created by matsumoto_k on 2017/12/03. + */ + +public class RegistrationRepository extends Repository { + private final RegistrationService registrationService; + + public RegistrationRepository() { + registrationService = new Retrofit + .Builder() + .baseUrl("http://nitta-lab-www2.is.konan-u.ac.jp:8080/SproutServer/") + .client(okHttpClient) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .addConverterFactory(GsonConverterFactory.create()) + .build() + .create(RegistrationService.class); + } + + public Single registration(String userName) { + return registrationService.postAccounts(userName); + } +} diff --git a/app/src/main/java/j4ckall/rxflux/repository/Repository.java b/app/src/main/java/j4ckall/rxflux/repository/Repository.java new file mode 100644 index 0000000..018637f --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/repository/Repository.java @@ -0,0 +1,15 @@ +package j4ckall.rxflux.repository; + +import okhttp3.OkHttpClient; + +/** + * Created by matsumoto_k on 2017/12/03. + */ + +public abstract class Repository { + protected final OkHttpClient okHttpClient; + + public Repository() { + okHttpClient = new OkHttpClient.Builder().build(); + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainAction.java b/app/src/main/java/j4ckall/rxflux/ui/MainAction.java deleted file mode 100644 index 0345719..0000000 --- a/app/src/main/java/j4ckall/rxflux/ui/MainAction.java +++ /dev/null @@ -1,14 +0,0 @@ -package j4ckall.rxflux.ui; - -import j4ckall.rxflux.lib.flux.Action; - -/** - * MainActivityのAction - * - * @author matsumoto_k - */ -public enum MainAction implements Action.Key { - COUNT_UP, - COUNT_DOWN, - INITIALIZE -} diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainActionCreater.java b/app/src/main/java/j4ckall/rxflux/ui/MainActionCreater.java deleted file mode 100644 index 03a7095..0000000 --- a/app/src/main/java/j4ckall/rxflux/ui/MainActionCreater.java +++ /dev/null @@ -1,28 +0,0 @@ -package j4ckall.rxflux.ui; - -import j4ckall.rxflux.App; -import j4ckall.rxflux.lib.flux.ActionCreater; - -/** - * MainActivityのActionを生成するクラス - * - * @author matsumoto_k - */ -public class MainActionCreater extends ActionCreater { - - public MainActionCreater() { - super(App.getDispatcher()); - } - - public void countUp(int num) { - dispatch(MainAction.COUNT_UP, num); - } - - public void countDown(int num) { - dispatch(MainAction.COUNT_DOWN, -num); - } - - public void initialize(int num) { - dispatch(MainAction.INITIALIZE, num); - } -} diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainActivity.java b/app/src/main/java/j4ckall/rxflux/ui/MainActivity.java deleted file mode 100644 index 7e1747e..0000000 --- a/app/src/main/java/j4ckall/rxflux/ui/MainActivity.java +++ /dev/null @@ -1,47 +0,0 @@ -package j4ckall.rxflux.ui; - -import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.widget.TextView; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.CompositeDisposable; -import j4ckall.rxflux.R; - -public class MainActivity extends AppCompatActivity { - - private MainStore mainStore = new MainStore(); - private MainActionCreater mainActionCreater = new MainActionCreater(); - private CompositeDisposable compositeDisposable = new CompositeDisposable(); - private TextView countText = null; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - countText = findViewById(R.id.text_count); - - findViewById(R.id.btn_plus).setOnClickListener(__ -> { - mainActionCreater.countUp(1); - }); - - findViewById(R.id.btn_minus).setOnClickListener(__ -> { - mainActionCreater.countDown(1); - }); - } - - @Override - protected void onResume() { - super.onResume(); - compositeDisposable.add( - mainStore.getCount().observeOn(AndroidSchedulers.mainThread()).subscribe(count -> countText.setText(count.toString())) - ); - mainActionCreater.initialize(0); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - compositeDisposable.dispose(); - } -} diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainStore.java b/app/src/main/java/j4ckall/rxflux/ui/MainStore.java deleted file mode 100644 index 1701f4c..0000000 --- a/app/src/main/java/j4ckall/rxflux/ui/MainStore.java +++ /dev/null @@ -1,66 +0,0 @@ -package j4ckall.rxflux.ui; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; -import io.reactivex.subjects.BehaviorSubject; -import io.reactivex.subjects.Subject; -import j4ckall.rxflux.App; -import j4ckall.rxflux.lib.flux.Store; - -/** - * MainActivityの状態を保持するクラス - * - * @author matsumoto_k - */ -public class MainStore extends Store { - - private Subject countSubject = BehaviorSubject.create().toSerialized(); - private Observable count = countSubject.hide().scan((sum, num) -> sum += num); - private boolean initialize = false; - - public MainStore() { - super(App.getDispatcher()); - - getDispatchObservable(MainAction.COUNT_UP) - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(action -> { - countSubject.onNext((Integer) action.value); - }); - - getDispatchObservable(MainAction.COUNT_DOWN) - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(action -> { - countSubject.onNext((Integer) action.value); - }); - - getDispatchObservable(MainAction.INITIALIZE) - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(action -> { - if (!initialize) { - countSubject.onNext((Integer) action.value); - initialize = true; - } - }); - - // TODO:DispatchからObservableを受け取るのかDispatchに対してSubscriberを設定するのかどちらが良いのか調べる -// on(MainAction.COUNT_UP, action -> { -// countSubject.onNext((Integer) action.value); -// }); -// -// on(MainAction.COUNT_DOWN, action -> { -// countSubject.onNext((Integer) action.value); -// }); -// -// on(MainAction.INITIALIZE, action -> { -// countSubject.onNext((Integer) action.value); -// }); - } - - public Observable getCount() { - return count; - } -} diff --git a/app/src/main/java/j4ckall/rxflux/ui/counter/MainAction.java b/app/src/main/java/j4ckall/rxflux/ui/counter/MainAction.java new file mode 100644 index 0000000..b0efd67 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/counter/MainAction.java @@ -0,0 +1,14 @@ +package j4ckall.rxflux.ui.counter; + +import j4ckall.rxflux.lib.flux.Action; + +/** + * MainActivityのAction + * + * @author matsumoto_k + */ +public enum MainAction implements Action.Key { + COUNT_UP, + COUNT_DOWN, + INITIALIZE +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/counter/MainActionCreater.java b/app/src/main/java/j4ckall/rxflux/ui/counter/MainActionCreater.java new file mode 100644 index 0000000..021bdd6 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/counter/MainActionCreater.java @@ -0,0 +1,27 @@ +package j4ckall.rxflux.ui.counter; + +import j4ckall.rxflux.lib.flux.ActionCreater; + +/** + * MainActivityのActionを生成するクラス + * + * @author matsumoto_k + */ +public class MainActionCreater extends ActionCreater { + + public MainActionCreater() { + super(); + } + + public void countUp(int num) { + dispatch(MainAction.COUNT_UP, num); + } + + public void countDown(int num) { + dispatch(MainAction.COUNT_DOWN, -num); + } + + public void initialize(int num) { + dispatch(MainAction.INITIALIZE, num); + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/counter/MainActivity.java b/app/src/main/java/j4ckall/rxflux/ui/counter/MainActivity.java new file mode 100644 index 0000000..209f31a --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/counter/MainActivity.java @@ -0,0 +1,47 @@ +package j4ckall.rxflux.ui.counter; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.widget.TextView; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; +import j4ckall.rxflux.R; + +public class MainActivity extends AppCompatActivity { + + private MainStore mainStore = new MainStore(); + private MainActionCreater mainActionCreater = new MainActionCreater(); + private CompositeDisposable compositeDisposable = new CompositeDisposable(); + private TextView countText = null; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + countText = findViewById(R.id.text_count); + + findViewById(R.id.btn_plus).setOnClickListener(__ -> { + mainActionCreater.countUp(1); + }); + + findViewById(R.id.btn_minus).setOnClickListener(__ -> { + mainActionCreater.countDown(1); + }); + } + + @Override + protected void onResume() { + super.onResume(); + compositeDisposable.add( + mainStore.getCount().observeOn(AndroidSchedulers.mainThread()).subscribe(count -> countText.setText(count.toString())) + ); + mainActionCreater.initialize(0); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + compositeDisposable.dispose(); + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/counter/MainStore.java b/app/src/main/java/j4ckall/rxflux/ui/counter/MainStore.java new file mode 100644 index 0000000..4cd1e15 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/counter/MainStore.java @@ -0,0 +1,65 @@ +package j4ckall.rxflux.ui.counter; + +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; +import io.reactivex.subjects.BehaviorSubject; +import io.reactivex.subjects.Subject; +import j4ckall.rxflux.lib.flux.Store; + +/** + * MainActivityの状態を保持するクラス + * + * @author matsumoto_k + */ +public class MainStore extends Store { + + private Subject countSubject = BehaviorSubject.create().toSerialized(); + private Observable count = countSubject.hide().scan((sum, num) -> sum += num); + private boolean initialize = false; + + public MainStore() { + super(); + + getDispatchObservable(MainAction.COUNT_UP) + .subscribeOn(Schedulers.computation()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(action -> { + countSubject.onNext((Integer) action.value); + }); + + getDispatchObservable(MainAction.COUNT_DOWN) + .subscribeOn(Schedulers.computation()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(action -> { + countSubject.onNext((Integer) action.value); + }); + + getDispatchObservable(MainAction.INITIALIZE) + .subscribeOn(Schedulers.computation()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(action -> { + if (!initialize) { + countSubject.onNext((Integer) action.value); + initialize = true; + } + }); + + // TODO:DispatchからObservableを受け取るのかDispatchに対してSubscriberを設定するのかどちらが良いのか調べる +// on(MainAction.COUNT_UP, action -> { +// countSubject.onNext((Integer) action.value); +// }); +// +// on(MainAction.COUNT_DOWN, action -> { +// countSubject.onNext((Integer) action.value); +// }); +// +// on(MainAction.INITIALIZE, action -> { +// countSubject.onNext((Integer) action.value); +// }); + } + + public Observable getCount() { + return count; + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/Account.java b/app/src/main/java/j4ckall/rxflux/ui/registration/Account.java new file mode 100644 index 0000000..3a605f7 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/registration/Account.java @@ -0,0 +1,41 @@ +package j4ckall.rxflux.ui.registration; + +/** + * RegistrationのEntity + * + * @author matsumoto_k + */ +public class Account { + + private int userID = -1; + private String userName = ""; + private String mode = ""; + + public Account() { + } + + public int getUserID() { + return userID; + } + + public void setUserID(int userID) { + this.userID = userID; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getMode() { + return mode; + } + + public void setMode(String mode) { + this.mode = mode; + } +} + diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationAction.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationAction.java new file mode 100644 index 0000000..6dd5d04 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationAction.java @@ -0,0 +1,11 @@ +package j4ckall.rxflux.ui.registration; + +import j4ckall.rxflux.lib.flux.Action; + +/** + * Created by matsumoto_k on 2017/12/03. + */ + +public enum RegistrationAction implements Action.Key { + REGISTRATION +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActionCreater.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActionCreater.java new file mode 100644 index 0000000..b7b2496 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActionCreater.java @@ -0,0 +1,22 @@ +package j4ckall.rxflux.ui.registration; + +import io.reactivex.schedulers.Schedulers; +import j4ckall.rxflux.App; +import j4ckall.rxflux.lib.flux.ActionCreater; +import j4ckall.rxflux.repository.RegistrationRepository; + + +public class RegistrationActionCreater extends ActionCreater { + private final RegistrationRepository registrationRepository; + + public RegistrationActionCreater() { + super(); + this.registrationRepository = App.getRegistrationRepository(); + } + + public void registration(String userName) { + registrationRepository.registration(userName).subscribeOn(Schedulers.computation()).subscribe(account -> { + dispatch(RegistrationAction.REGISTRATION, account); + }); + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActivity.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActivity.java new file mode 100644 index 0000000..dedfaee --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActivity.java @@ -0,0 +1,20 @@ +package j4ckall.rxflux.ui.registration; + +import android.databinding.DataBindingUtil; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; + +import j4ckall.rxflux.R; +import j4ckall.rxflux.databinding.ActivityRegistrationBinding; + +public class RegistrationActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ActivityRegistrationBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_registration); + RegistrationViewModel viewModel = new RegistrationViewModel(); + binding.setViewModel(viewModel); + getLifecycle().addObserver(viewModel); + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationStore.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationStore.java new file mode 100644 index 0000000..718e403 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationStore.java @@ -0,0 +1,34 @@ +package j4ckall.rxflux.ui.registration; + +import io.reactivex.Observable; +import io.reactivex.subjects.BehaviorSubject; +import io.reactivex.subjects.Subject; +import j4ckall.rxflux.lib.flux.Store; + +/** + * Created by matsumoto_k on 2017/12/03. + */ + +public class RegistrationStore extends Store { + private static final RegistrationStore outInstance = new RegistrationStore(); + private final Subject accountSubject = BehaviorSubject.create(); + private final Observable account = accountSubject.hide(); + + public RegistrationStore() { + super(); + + getDispatchObservable(RegistrationAction.REGISTRATION).subscribe( + action -> { + accountSubject.onNext((Account) action.value); + } + ); + } + + public Observable getAccountObservbale() { + return account; + } + + public static RegistrationStore get() { + return outInstance; + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationViewModel.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationViewModel.java new file mode 100644 index 0000000..850aacc --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationViewModel.java @@ -0,0 +1,49 @@ +package j4ckall.rxflux.ui.registration; + +import android.content.Intent; +import android.databinding.ObservableField; + +import io.reactivex.disposables.CompositeDisposable; +import j4ckall.rxflux.App; +import j4ckall.rxflux.lib.architecture.BaseViewModel; +import j4ckall.rxflux.ui.roomlist.RoomListActivity; + +public class RegistrationViewModel extends BaseViewModel { + private final RegistrationStore registrationStore = RegistrationStore.get(); + private final RegistrationActionCreater registrationActionCreater = new RegistrationActionCreater(); + private final CompositeDisposable subscriptions = new CompositeDisposable(); + private ObservableField editUserName = new ObservableField<>(""); + + public RegistrationViewModel() { + } + + @Override + public void onResume() { + subscriptions.add( + registrationStore.getAccountObservbale().subscribe(account -> { + // TODO:仮の呼び出しなので呼び出し方法を変える finishをしてないのでbackした時にここの処理が現状走ることになる + Intent intent = new Intent(App.get(), RoomListActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + App.get().startActivity(intent); + }) + ); + } + + @Override + public void onPause() { + subscriptions.dispose(); + } + + /** + * 登録ボタンを押した時 + * + * @param userName + */ + public void registration(String userName) { + registrationActionCreater.registration(userName); + } + + public ObservableField getEditUserName() { + return editUserName; + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/roomlist/RoomListActivity.java b/app/src/main/java/j4ckall/rxflux/ui/roomlist/RoomListActivity.java new file mode 100644 index 0000000..3efed0e --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/roomlist/RoomListActivity.java @@ -0,0 +1,18 @@ +package j4ckall.rxflux.ui.roomlist; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; + +import j4ckall.rxflux.R; +import j4ckall.rxflux.ui.registration.RegistrationStore; + +public class RoomListActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_room_list); + System.out.println("Valueの共有テスト"); + RegistrationStore.get().getAccountObservbale().subscribe(account -> System.out.println(account.getUserName())); + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 8d342f8..7d7b1db 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="j4ckall.rxflux.ui.MainActivity"> + tools:context="j4ckall.rxflux.ui.counter.MainActivity"> + + + + + + + + + + + +