- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我希望将应用程序与 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/
在 Mortar 中,如果 ActionBar 根据显示的屏幕发生变化,我很好奇人们如何处理它。例如,假设您想要在显示特定屏幕时更改 ActionBar 标题或操作。 注入(inject) Activ
我有一个使用 Mortar/Flow 和 Dagger 2 设置的应用程序。除了当我在同一类的两个 View 之间切换时,它似乎可以正常工作。新 View 以先前 View 的演示者结束。 例如,我有
我希望将应用程序与 Google Play 服务和 Mortar 集成以检索用户的当前位置。 https://developer.android.com/training/location/retri
我正在使用 Mortar 构建我的应用程序+ Flow .我试图找出正确的方法来显示一个弹出窗口,该弹出窗口请求用户提供一些文本。我创建了这个弹出类: public class SavedPageTi
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
我将列表与带有 ViewHolder 的自定义适配器和带有按钮的项目 View 一起使用。我想通过单击 Presenter 中的按钮来处理一些事情。 如何将 Presenter 与这些 Item Vi
我正在尝试在我的应用程序中调整 Mortar&Flow,但遇到了一个问题,即我无法让 PageAdapter 与 Screens 一起工作,而不是与 Fragments 一起工作。 有人设法做对了吗?
我正在使用 Mortar 和 Flow 来支持我的应用。如果我有以下 View : public class MyView extends LinearLayout { @Inject MyScr
我想知道是否有任何为 Flow 和 Mortar Android 应用程序编写单元测试的示例。 MVP 模式的部分优势在于它提供了表示和 View 逻辑的分离,而表示逻辑是您要针对其编写测试的内容。我
一些第三方库在 Activity 生命周期中使用 Hook 来正常工作 - 例如,Facebook SDK (https://developers.facebook.com/docs/android/
所以我花了很多时间在 Mortar and Flow这个周末,我想我终于完成了大部分工作。我发现它比我最初想象的要复杂一些,主要是因为我还没有完全理解 Dagger 的 ObjectGraph 范围,
我正在寻找一种使用 Flow 从屏幕返回结果的方法不会丢失在上一个屏幕中构建的内容,类似于我对 onActivityResult 所做的。例如,这是我正在创建新文档的屏幕: @Layout(R.lay
我正在使用 Flow 和 Mortar 编写应用程序。当涉及到带有选项卡的 View 寻呼机时,我无法弄清楚如何使用它。 我能想到的唯一方法是将 ViewPager 屏幕视为单个屏幕,并最终使用 Fr
我正在尝试将 Acticity + Fragments 应用程序转换为 Flow + Mortar + Dagger2 我想在从一个屏幕跳到另一个屏幕(至少向后)时保存和恢复屏幕状态。首选/推荐的方法
我是一名优秀的程序员,十分优秀!