1

我正在開發一個顯示列表的小應用程序,當單擊某個項目時,它將打開一個包含項目詳細信息的輔助屏幕。我想實現MVP作爲我的這個應用程序的架構,我一直在努力找出如何做到這一點,當我有單個活動與2個片段在具有兩個(或多個)碎片的單個活動上實施MVP

我的想法是每個片段有一個演示者,這意味着活動將有兩個演示者實例,因爲活動需要實例化它們(至少從我看過的這個鏈接的例子項目https://github.com/googlesamples/android-architecture)...

然後出現了一些問題,當點擊列表中的某個項目時,回調被髮送給第一個演示者,但此時誰負責打開第二個片段?主持人互相交談嗎?我應該通過這項活動來完成嗎?有點丟失..

一直在四處尋找單個活動的例子與多個片段實施MVP,但找不到像這樣的東西。

(是的,它可以以其他方式完成,但應用程序的目的是學習與多個片段在一個活動中實現MVP)

感謝任何幫助! 謝謝!

回答

0

有可能有很多方法來實現MVP。主要我們使用3件事。 - 查看 - 演示者 - 模態

在創建這些東西之前,您應該清楚自己的屏幕工作。

例如,如果你想要一個登錄屏幕。 首先創建活動的結構(使用接口)。比如你的主持人和觀點將包含 例如。

public interface LoginPresenter { 
    void validateCredentials(String username, String password); 
    void onDestroy(); 
} 

視圖結構:

public interface LoginView { 
void showProgress(); 

void hideProgress(); 

void setUsernameError(); 

void setPasswordError(); 

void navigateToHome(); 
} 

現在,這些都需要在您的邏輯部分駐留在您的視圖類(活動/片段)和主持人來執行類。

現在關於您的查詢。

這意味着活動將有兩個演示者實例。 不,你的活動不應該要求有多個主持人。它已經打開片段引用(由findfragmentby id或tag)。

誰負責打開第二個片段?

你可以從任何一個Activity/fragment中打開它。 如果活動使用getfragmentsupportManager 如果片段使用getfragmentManager

注:欲瞭解更多信息按照這個混帳例子。 https://github.com/antoniolg/androidmvp

+0

感謝您的回答,大部分的MVP介紹我已經知道了(關於接口等)..你有一個git的例子,但我看不到任何鏈接..也許你忘了添加它? ,關於不應該有多個演示者的活動....好吧,如果每個片段都有一個演示者,並且活動就是實例化他們的活動(在幾個項目中可以看到這一點) ,該活動將不會有多個演示者? –

+0

活動是實例化片段的人,例如,如果您有登錄片段作爲您的第一個片段,活動將實例化它。所有登錄工作流程都將由您的片段視圖,模式和演示者處理。 當成功登錄第一個片段時會打開另一個片段。 與此同時,你有兩個片段的公共變量,你可以把它放在活動上,這樣兩個片段都可以訪問它。 ((MainActivity)getActivity())。commonVariable –

相關問題