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

Fragment中按钮OnClickListener失效问题排查求助

解决Fragment中按钮无法响应点击的问题

嘿,这个问题我一眼就瞅出症结啦!咱们来拆解下你的代码问题:

先看你原代码里的关键部分:

// private Button button; LayoutInflater lf; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    lf=inflater; 
    View view = inflater.inflate(R.layout.fragment_home, container, false); 
    Button button = (Button) view.findViewById(R.id.home_button); 
    button.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
            Intent intent=new Intent(lf.getContext(),sunhan_activity.class); 
            startActivity(intent); 
        } 
    }); 
    return inflater.inflate(R.layout.fragment_home, container, false); 
}

问题出在最后一行的返回值上:你先创建了一个view对象,在这个view上找到了按钮并绑定了点击事件,但最后却重新inflate了一个全新的view返回——这就导致你之前设置好点击逻辑的那个view根本没被展示在界面上,当前显示的是一个完全没绑定事件的新view,按钮自然不会响应点击啦!

修复后的代码

只需要把返回值改成你已经初始化并绑定好事件的那个view就行:

// private Button button; LayoutInflater lf; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    lf=inflater; 
    View view = inflater.inflate(R.layout.fragment_home, container, false); 
    Button button = (Button) view.findViewById(R.id.home_button); 
    button.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
            // 这里用view.getContext()或者getActivity()获取上下文会更稳妥哦
            Intent intent=new Intent(view.getContext(),sunhan_activity.class); 
            startActivity(intent); 
        } 
    }); 
    // 返回已经设置好点击事件的view
    return view; 
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:37:50