簡體   English   中英

如何使用Mortar處理onActivityResult()

[英]How to handle onActivityResult() with Mortar

我希望將應用程序與Google Play服務和Mortar集成,以檢索用戶的當前位置。

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

這需要在Google Play服務不可用的情況下處理onActivityResult()。

我對如何做到這一點的第一直覺是讓Main.java getFirstScreen()返回一個空白加載屏幕。 https://github.com/square/mortar/blob/master/mortar-sample/src/main/java/com/example/mortar/core/Main.java

注入后,在onCreate()期間執行檢查以查看Google Play服務是否可用。 如果是,則調用flow.goTo(<location using screen>) ,如果沒有,則不執行任何操作並等待onActivityResult()被調用。 然后,當onActivityResult()觸發時,只需調用flow.goTo(<location using screen>)

以上看起來對我來說有些苛刻。 (如果您需要澄清,請告訴我)。 所以我認為另一個解決方案可能是做一些類似於這個Mortar + Flow的東西,第三方庫掛鈎到活動生命周期,並將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.
  }
}

活動看起來像:

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並不感到興奮,但是在我們有了更好的想法之前它就完成了工作。)或者也許活動應該繼續並自己處理它? 我對Play服務並不是很熟悉,還沒有處理過它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM