1

我不確定該標題是否具有很多意義,很難解釋我想要的內容,但我會放棄它。當未使用片段時,從MainActivity的ListFragment調用函數

我要碎片,ListFragment和MyFragment。如果設備是縱向的,即兩個碎片不能一起放在屏幕上,則只顯示LisFragment。我有一個名爲MyActivity的活動,它承載這些片段並顯示相關設備方向的相關片段。

用戶然後可以按下按鈕來執行搜索使用startActivityForResult,然後執行一個調用MyActivity內的函數來實際執行所需的。

如果手機處於橫向模式,即兩個分段都可見,它將成功從PasswordList片段內調用該功能。但是,如果手機是縱向的,則ListFragment爲空,因此該函數不會被調用。下面是我與

public void performSearch(ArrayList<Spanned> passwords) { 
    PasswordList passwordList = (PasswordList)getFragmentManager().findFragmentById(R.id.passwordListFragment); 
    passwordList.performingSearch = true; 
    passwordList.performSearch(passwords); 
} 

的PasswordList有問題的代碼是我上面講的ListFragment,當手機在橫向passwordList工作,我可以執行performSearch功能。如果手機即使在顯示ListFragment時也是縱向顯示,它將返回Null,因此performSearch無法執行。

如何以任何方式執行performSearch函數。感謝您的任何幫助,您可以提供。

回答

0

自從我做Android以來已經有一段時間了,但我相信因爲這個片段實際上並沒有顯示出來,所以在這種情況下它並不存在。我相信每次你改變方向,視圖都會重新繪製等等。

這個函數是在另一個片段中,有沒有反正你可以將它提取到另一個類中?在我之前的一個android項目中,我使用了兩個片段,但是對於手機/小型設備,我只是將它轉發給了託管第二個片段的FragmentActivity(我使用了compat庫)。在表格版本中,第二個片段被顯示。

這不是超級優雅,有點舊,但我的項目是開源的,如果你想看一下www.github.com/zerkz。

+0

我可能會將函數移動到新類,但該函數會修改用戶界面的控件。雖然我可以使用PasswordList passwordList = new PasswordList()來訪問控件;然後passwordList.performSearch(),但這會創建一個新的實例,因此該函數中的任何控件都不會修改實際顯示的UI控件 – Boardy

+0

您是否在使用setRetainInstance()?我在另一個相關問題的答案中看到了這一點。 – Zerkz

+0

我不是沒有,從來沒有聽說過 – Boardy

相關問題