Mortar と Flow を使用してアプリを強化しています。次のビューがある場合:
public class MyView extends LinearLayout {
@Inject MyScreen.Presenter presenter;
private EditText someText;
public MyView(Context context) {
super(context);
Mortar.inject(context, this);
}
@Override protected void onFinishInflate() {
super.onFinishInflate();
presenter.takeView(this);
}
@Override protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
presenter.dropView(this);
}
}
そして次の画面。
@Layout(R.layout.my_view)
public class MyScreen implements Blueprint {
@Override public String getMortarScopeName() {
return getClass().getName();
}
@Override public Object getDaggerModule() {
return new Module();
}
@dagger.Module(injects = MyView.class, addsTo = MyActivity.Module.class)
public class Module {
}
@Singleton
public class Presenter extends ViewPresenter<MyView> {
private final SomeAsyncService service;
@Inject
Presenter() { }
@Override public void onLoad(Bundle savedInstanceState) {
}
@Override public void onSave(Bundle outState) {
}
}
}
この画面とビューを使用しているアクティビティにアクセスしたいと思います。次のような Activity メソッドのいくつかにアクセスできるようにします。
getWindow()
finish()
getLayoutInflater()
getFragmentManager()
etc
画面内で次のようなコンテキストをキャストしようとしました:
Activity activity = (Activity)getView.getContext;
ただし、これはもちろん次の例外をスローします。
java.lang.ClassCastException: mortar.MortarContextWrapper cannot be cast to
android.app.Activity
その活動を取得する方法は?ありがとうございました。