Я использую раствор и поток для питания своего приложения. Если у меня есть следующий вид:Рекомендуемый способ получения активности внутри экрана раствора?
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) {
}
}
}
Теперь я хотел бы получить доступ к деятельности, которая использует этот экран и View. Я хотел бы иметь доступ к некоторым из методов деятельности, как:
getWindow()
finish()
getLayoutInflater()
getFragmentManager()
etc
Я попытался бросить контекст, как это в моем экране:
Activity activity = (Activity)getView.getContext;
Но это, конечно, бросает следующее исключение:
java.lang.ClassCastException: mortar.MortarContextWrapper cannot be cast to
android.app.Activity
Как получить эту деятельность? Спасибо.
Спасибо, но я думаю, что этот пример не работает. Я пытаюсь заставить его работать последние два дня, но он не работает. Можете ли вы предоставить немного больше деталей? – user4386126
@ user4386126 ОК, я добавил несколько источников. надеюсь, что это поможет. – eccyan
Это так. Спасибо! – user4386126