Fragment中绑定网页跳转链接的按钮无法正常工作如何解决?
问题根因
布局中通过android:onClick属性声明的点击事件,默认只会在加载该布局的宿主Activity中查找对应名称的方法,不会自动绑定Fragment中的同名方法,这就是按钮放在Activity中正常、放在Fragment中失效的核心原因。
推荐解决方案
不要通过xml的android:onClick属性绑定事件,直接在Fragment的onCreateView生命周期中手动为按钮设置点击监听器,稳定性更高也更符合Fragment的开发规范。
修改后的Fragment代码如下:
public class RideSharesFragment extends Fragment { public RideSharesFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 先获取填充后的布局根实例 View rootView = inflater.inflate(R.layout.fragment_ride_shares, container, false); // 绑定Uber按钮点击事件 Button uberBtn = rootView.findViewById(R.id.Uber); uberBtn.setOnClickListener(view -> { Intent browserIntent = new Intent( Intent.ACTION_VIEW, Uri.parse("https://m.uber.com/") ); startActivity(browserIntent); }); // 绑定Lyft按钮点击事件,按你的需求补充跳转逻辑即可 Button lyftBtn = rootView.findViewById(R.id.button2); lyftBtn.setOnClickListener(view -> { // 此处替换为Lyft对应的跳转逻辑即可 Intent browserIntent = new Intent( Intent.ACTION_VIEW, Uri.parse("https://www.lyft.com/") ); startActivity(browserIntent); }); return rootView; } }
注意事项
请删除xml布局Button标签中之前添加的android:onClick属性,避免方法冲突。
内容的提问来源于stack exchange,提问作者ChanCho
相关产品推荐
相关产品推荐

