[英]Variable's address is different inside onContextItemSelected
我有一個自定義類的實例,在片段中聲明了“遇到”,如下所示:
public class EncounterStrategyFragment extends Fragment
implements DialogConfirm.NoticeDialogListener{
private MalifauxEncounter encounter;
該對象包含一個列表。 它提供給自定義列表適配器,該適配器可以按預期工作。 適配器所連接的ListView已通過registerForContextMenu(listview);
注冊為上下文菜單registerForContextMenu(listview);
。
我的問題是,在OnContextItemSelected回調方法中'遇到者的地址/標識正在更改。 這是片段中其他任何地方的“遭遇”狀態:(id = 830047711760,數組大小= 10)
但是在OnContextItemSelected內部,它變為:(id = 830055767320,內部數組大小= 0)
我會發布圖片,但是我的聲譽不夠高...
在OnContextItemSelected之外,該地址與最初的地址相同,因此不會重新創建“遇到對象”。 唯一的區別就是這種方法。 因此,我嘗試在OnContextItemSelected內部執行的任何修改都會導致錯誤。
在使此片段成為ActionBar選項卡結構的一部分之前,我的實現工作正常。
到底他媽發生了什么?
編輯:解決:我問題的根本原因是該片段是由操作欄選項卡管理器代碼兩次創建的。 OnContextItemSelected使用的是Fragment第二個實例中的'encounter'變量,而另一個源使用的是第一個實例中的副本。 使用這篇文章解決: 片段onCreateView和onActivityCreated調用了兩次
我的問題的根本原因是“動作欄”選項卡管理器代碼兩次創建了Fragment。 OnContextItemSelected方法使用的是Fragment的第二個實例中的'encounter'變量,而另一個源使用的是第一個實例中的副本。 使用這篇文章解決: 片段onCreateView和onActivityCreated調用了兩次
可能有人卡住了onContextItemSelected
返回的錯誤數據。 就我而言,我基於一個片段和上下文菜單使用了ViewPager
。
如果是這種情況,請參閱ViewPager中的錯誤片段收到onContextItemSelected調用 。
例如,
override fun onContextItemSelected(item: MenuItem?): Boolean {
return if (userVisibleHint) {
// Handle menu events and return true
true
} else
false // Pass the event to the next fragment
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.