簡體   English   中英

在java中初始化返回nulll后訪問方法外的值

[英]Accessing the value outside of method after initializing returning nulll in java

我從回調中獲取字符串並存儲在變量調用通道中。 現在很好,但是當訪問回調方法之外的值時,它返回 null 為什么? 請幫我在此處輸入圖片說明

不幸的是,您的屏幕截圖上並未顯示所有文本。 在 Stackoverflow 上,如果您將源代碼直接粘貼到您的問題中而不是共享屏幕截圖,則通常是首選。 這需要更多的努力,同時,請考慮到回答您問題的人也在努力幫助您 - 並且通過將源代碼作為文本發布,您可以更輕松地為每個人提供幫助。

對於您的問題,可能會發生以下幾種情況:

  • 回調永遠不會被調用 - 因此沒有任何內容寫入該變量
  • 回調不會立即調用,而是稍后調用(可能由另一個線程調用)。 因此,您會發現在將該回調傳遞給 Back 方法后不會立即設置該變量,而是可能在幾秒鍾或幾毫秒后設置。 這對計算機來說是很長的時間,所以當您稍后訪問變量時,您可能為時過早。
  • 如果涉及線程,則您的代碼不是線程保存的。 這意味着 - channel=valuechannel+="1"也可能同時發生,這可能會給您帶來不可預測的結果。

要解決此問題,您需要在知道回調已被調用時觸發回調后應發生的任何操作。 我不是 Android 專家; 可能有聽眾可用。 如果沒有,那么最簡單的方法是在從回調本身調用回調之后調用應該發生的代碼(請注意,這很可能是 android 中的一種不好的做法,因為它可能會使 UI 變得無響應。要解決也就是說,您需要在與 UI 線程不同的線程上執行代碼)

暫無
暫無

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

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