我正在使用 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
如何获得该活动?谢谢你。