使用 ShareSDK 實現 QQ/微信等第三方登錄,授權回調中已獲取用戶信息(日志顯示 userName、userIcon 均有值),但在 Fragment 的 initData() 中調用 left_menu_fragment_textview.setText(userInfo.getUserName()) 時拋出 NullPointerException,堆棧指向第 121 行。
Fragment 視圖尚未創建完成 即觸發了回調。具體流程:
left_menu_fragment_textview 為 null。// 在 onViewCreated 或 onResume 中標記視圖就緒
private boolean isViewReady = false;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
isViewReady = true;
if (platform != null) initData(); // 視圖就緒後再初始化
}
public void setPlatform(String platName) {
platform = ShareSDK.getPlatform(platName);
if (isViewReady) initData(); // 僅視圖就緒時執行
}
if (left_menu_fragment_textview != null && userInfo.getUserName() != null) {
left_menu_fragment_textview.setText(userInfo.getUserName());
}
避免在視圖未綁定時操作控件,建議遷移到 ViewBinding 或在 onViewCreated 後統一綁定。