3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
用戶為空。檢查 null 如下
if(user != null){
String username = user.getUsername();
Username.setText(username);
String email = user.getEmail();
Email.setHint(email);
String mobile = user.getMobile();
Mobile.setHint(mobile);
Boolean notifications = user.getNotifications();
Notifications.setChecked(notifications);
Boolean emails = user.getEmails();
Emails.setChecked(emails);
}

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
NullPointerException 原因是,如果您在 null 對(duì)象上調(diào)用任何方法,那么它肯定會(huì)拋出此異常。
直接調(diào)用在運(yùn)行時(shí)獲取的對(duì)象上的方法是不正確的編碼實(shí)踐,除非您 100% 確定存在某個(gè)對(duì)象,即使該對(duì)象為空。因此,只有 NullPointerException 是未經(jīng)檢查的異常。
回答你的問(wèn)題,
請(qǐng)確認(rèn)您獲得了正確的 userId 并且該 userId 是否存在于數(shù)據(jù)庫(kù)中。
searchById(userId),
無(wú)法找到具有給定 userId 的對(duì)象,因此它會(huì)返回。您只需要在調(diào)用用戶方法之前進(jìn)行空檢查
if(user!=null)
如果值高于條件為真,則執(zhí)行操作,但這取決于您的業(yè)務(wù)需求。上述條件只會(huì)使您免于此異常,但如果在任何情況下您需要用戶對(duì)象,請(qǐng)檢查您正在獲取的 userId 及其在數(shù)據(jù)庫(kù)中的存在。
你正在檢索

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)您看到此錯(cuò)誤時(shí),用戶為空,因此您必須在調(diào)試模式下檢查一些內(nèi)容:
1.可能這個(gè)功能有一些bug:
LoginActivity.tuckBoxDB.tbDao().searchById(userID);
也許這個(gè)函數(shù)找不到 int extra 。檢查啟動(dòng)活動(dòng)是否通過(guò)了此額外操作,并檢查您的密鑰(sessionUser)是否在兩者中相同:
getIntent().getIntExtra("sessionUser", 0)
添加回答
舉報(bào)