我正在使用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{ private final SomeAsyncService service; @Inject Presenter() { } @Override public void onLoad(Bundle savedInstanceState) { } @Override public void onSave(Bundle outState) { } } }
现在我想访问使用此屏幕和视图的Activity.我想访问一些Activity方法,如:
getWindow() finish() getLayoutInflater() getFragmentManager() etc
我试图在我的屏幕中投射这样的上下文:
Activity activity = (Activity)getView.getContext;
但这当然会引发以下异常:
java.lang.ClassCastException: mortar.MortarContextWrapper cannot be cast to android.app.Activity
如何进行这项活动?谢谢.