You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Fragment的TextView打开URL?空指针异常排查

解决你的Fragment中TextView链接的NullPointerException问题

嘿,我一眼就揪出了导致你遇到NPE的两个问题,咱们一步步来修复:

1. 核心问题:getView()调用时机完全错了

在onCreateView方法里,你还没返回rootView就调用getView()——这时候Fragment的视图还没被系统关联,getView()会直接返回null!用它去findViewById得到的t2肯定是null,虽然你加了判空,但等于白忙活,链接的点击逻辑根本没生效,还埋下了NPE的隐患(要是没判空直接操作就直接炸了)。

修复方案:用你刚inflate出来的rootView查找控件,它才是当前Fragment的视图根节点。

修正后的Fragment代码:

public class About_us extends Fragment { 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
        View rootView = inflater.inflate(R.layout.fragment_about_us, container, false); 
        // 改用rootView查找控件,而非getView()
        TextView t2 = rootView.findViewById(R.id.read_more); 
        if (t2 != null) { 
            t2.setMovementMethod(LinkMovementMethod.getInstance()); 
        } 
        return rootView; 
    } 
}

2. 次要问题:URL缺少协议头

你strings.xml里的链接写的是www.google.com/,没有加https://或http://——就算修复了第一个问题,系统也识别不出这是合法URL,点击后不会跳转。

修复方案:给URL补上协议头:

<string name="link_to_the_website"><a href="https://www.google.com/">Read More Here</a></string>

另外补充个小细节:布局里的android:clickable="true"可以去掉,因为LinkMovementMethod会自动处理链接的点击事件,留着也不影响,但去掉更简洁。

这样修改后,你的“Read More”链接就能正常显示并点击跳转,也不会再出现NullPointerException啦~

内容的提问来源于stack exchange,提问作者CuriousPaul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:12:38