簡體   English   中英

對話框和方向更改后更新RecyclerView

[英]Update RecyclerView after Dialog and orientation change

我有一個僅使用一項活動的應用程序。 在內部,我用recyclerview加載片段。 recyclerview中的每個項目都是一個對話框片段。 用戶可以更改項目,因此在關閉對話框時更新了recyclerview。

我現在遇到的問題是,當對話框處於活動狀態時旋轉應用程序時,關閉對話框后,recyclerview將不會更新。

我的對話框在銷毀時會與應用程序中的所有內容一起重新創建,因此我懷疑dismisslistener在重新創建時會被銷毀。

該對話框提供了一種方法來設置dismisslistener,然后重寫該事件以檢查是否已設置該事件。

public void setOnDismissListener(DialogInterface.OnDismissListener 
onDismissListener) {
    this.onDismissListener = onDismissListener;
}

@Override
public void onDismiss(DialogInterface dialog) {
    super.onDismiss(dialog);
    if (onDismissListener != null) {
        onDismissListener.onDismiss(dialog);
    }
}

然后,我在recyclerview的onViewBindHolder中設置一個dismisslistener

editor.setOnDismissListener(dialog -> {
    recycler.getAdapter().notifyDataSetChanged();
}

我不確定為什么會發生這種情況,但似乎在更改方向並重新創建所有內容之后,recyclerview從未更新。 我發現該方法仍被調用,因為ondismisslistener內部是另一個函數,該函數使用getView().findViewById()更新了另一個視圖,由於getView返回null,該應用程序隨后崩潰了。

我在這里找不到有關此的任何其他帖子。

有誰知道我該如何解決解雇偵聽器,或者可能有其他方法等待對話片段關閉?

您是否已將android:configChanges =“ orientation | screenSize”添加到AndroidManifest中的活動中? 否則,請嘗試(onRestoreInstanceState()和onSaveInstanceState()

好吧,我發現出了什么問題。 重新創建后,對話框將丟失其所有變量,就像其他所有變量一樣。

從理論上講,可以將這些變量保存在包中,然后在重新創建時再次獲取它們,但是我沒有找到一種使用OnClickListener進行此操作的方法,因為傳遞給包的對象必須是可序列化的或可解析的。

因此,當我的對話沒有任何變量時,現在可以通過在OnCreate中進行檢查來關閉我的對話。

暫無
暫無

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

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