gpt4 book ai didi

android - 如何用 Mortar 处理 onActivityResult()

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:18 26 4
gpt4 key购买 nike

我希望将应用程序与 Google Play 服务和 Mortar 集成以检索用户的当前位置。

https://developer.android.com/training/location/retrieve-current.html#CheckServices

这需要在 Google Play 服务不可用的情况下处理 onActivityResult()。

关于如何做到这一点,我的第一直觉是制作 getFirstScreen()Main.java返回一个空白的加载屏幕。 https://github.com/square/mortar/blob/master/mortar-sample/src/main/java/com/example/mortar/core/Main.java

注入(inject)后,在onCreate()期间执行检查以查看 Google Play 服务是否可用。如果是,则调用 flow.goTo(<location using screen>) ,如果没有,什么也不做,等待onActivityResult()被称为。然后,当onActivityResult()火灾,只需调用flow.goTo(<location using screen>) .

以上内容对我来说似乎有点老套。 (如果您需要澄清,请告诉我)。所以我认为另一个解决方案可能是做类似于此的事情 Mortar + Flow with third party libraries hooked to activity lifecycle并连接onActivityResult()给主持人。问题是我无法访问 Activity来自演示者,这使得无法调用 GooglePlayServicesUtil.getErrorDialog(...)因为它需要 Activity .

我认为onActivityResult()非常重要。也许它应该成为 Mortar 库的一部分?

最佳答案

下面是我们通常如何处理 Square Register 中的 startActivityForResult。

public SomePresenter extends Presenter<SomePresenter.Activity> {
public interface Activity {
void startActivityForResult(android.content.Intent intent, int requestCode);
}

public final void onActivityResult(int requestCode, int resultCode, Intent data) {
// Make sure it's the expected requestCode and resultCode and do your thing.
// If it isn't, no-op, someone else will handle it.
}
}

Activity 看起来像这样:

public MyActivity extends Activity implements SomePresenter.Activity {


@Override protected void onCreate(Bundle bundle) {
// Do the usual mortar init stuff

somePresenter.takeView(this);
}

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
somePresenter.onActivityResult(requestCode, resultCode, data);
}

@Override protected void onDestroy() {
somePresenter.dropView(this);
super.onDestroy();
}
}

这对错误对话框没有帮助,但对我来说这听起来像是一个单独的问题。似乎您可以在那里使用 Popup/PopupPresenter 对。 (我对 Popup 并不满意,但它可以完成工作,直到我们有更好的主意。)或者 Activity 应该继续进行并自行处理?我对 Play Services 不是很熟悉,还没有接触过它们。

关于android - 如何用 Mortar 处理 onActivityResult(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com