想問各位高手,我想將登入的資訊以Bundle 的方式打包從Fragment傳送到Activity個人檔案裡頭,並且顯示資訊出來以便日後可以更改
以下是我的Fragment介面
以下是我的Activity介面
最後確實都有顯現出來資訊也可以修改,但是出現java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference 傳送空值的錯誤
想請問大家是哪個環節出錯了?
Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
就錯誤訊息來看
就是 intent 裡的 bundle 是 null
以致對他 getString 導致錯誤
感謝你的回覆,我已除錯成功了!我將bundle去除掉就可以了
以下是登入介面
以下是個人檔案介面
顯示出來資料了!
但我有一個問題想再請教一下,我點進入主頁按鈕,之後再點個人檔案頁面資料就不見了!
想請問該如何點回之後資料依舊存在呢?
以下是個人檔案介面(UserProfile)
以下是主頁面(MainActivity)
以下是點進入主頁後再點進個人檔案料消失顯示畫面
這是因為您在沒有將data通過intent傳遞給UserProfile.java
Activity stack(堆棧)
有兩種方法可以解決這個問題。
一種方法是將data放入Singleton(單例模式) object中,這樣您就不需要依賴意intent來傳遞data。
另一種方法是修改AndroidManifest.xml。
將android:launchMode="singleTask"
添加到activity中,這樣您的目標activity將始終只有單個instance。
E.G.
Activity stack(堆棧)
Activity contains [LoginFrag]
== Intent(username, email, password) ==>
Activity A [UserProfile]
== Intent(empty) ==>
Activity B [MainActvitiy]
== Intent(Empty) ==>
Activity A [UserProfile]
想請問該如何點回之後資料依舊存在呢?
比起這個問題
更重要的是基本觀念
這觀念適用在「你寫的所有頁面」
任何一個頁面,顯示的資料,可能有四個來源
1.使用者按鍵盤輸入的
2.程式寫固定的
3.從資料庫取出來的
4.從前一個頁面傳過來的
先確定你這個頁面顯示的「來源」是那一種
如果是第4種
就是樓上講的「沒有傳 bundle 過來」
這屬於數據持久化(data persistent)問題
要解決,要麼