Android Studio中Fragment跳转无报错但未执行的原因及实现方法
问题分析与解决方案
嘿,我仔细瞅了你的代码,马上就找到跳转逻辑没执行的核心问题啦!
为啥跳转没生效?
你的代码里有两个关键错误,直接导致跳转失效:
- Fragment不能用Intent跳转:
Intent是用来启动Activity的,Fragment是依附于Activity的组件,根本没法用Intent来启动。你注释掉的那行Intent intent = new Intent(view.getContext(), ProfileFragmentCapilar2.class);从逻辑上就不对,Fragment不是独立的Activity,这套启动方式完全不适用。 - 就算是你写的网页跳转Intent,也没调用
startActivity(intent)来触发执行,所以网页也不会打开。
修正后的跳转代码
下面是修改后的点击事件逻辑,完美实现从ProfileFragment跳转到ProfileFragmentCapilar2:
btnTEST.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getActivity(), "apears toast",Toast.LENGTH_SHORT).show(); // 1. 创建目标Fragment的实例 ProfileFragmentCapilar2 targetFragment = new ProfileFragmentCapilar2(); // 2. 可选:用Bundle传递参数给目标Fragment Bundle bundle = new Bundle(); // 比如传个字符串参数:bundle.putString("user_id", "123"); targetFragment.setArguments(bundle); // 3. 通过FragmentManager执行Fragment替换操作 getActivity().getSupportFragmentManager() .beginTransaction() // 替换Activity布局里的Fragment容器,R.id.fragment_container是你容器的ID .replace(R.id.fragment_container, targetFragment) // 可选:添加到返回栈,让用户按返回键能回到当前Fragment .addToBackStack(null) // 提交事务完成跳转 .commit(); } });
额外要注意的点
- 你的宿主Activity布局里必须有一个Fragment容器(一般是
FrameLayout),比如:<FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> - 如果你的项目没使用AndroidX,把
getSupportFragmentManager()换成getFragmentManager()就可以了。
内容的提问来源于stack exchange,提问作者Leandro Mendes
相关产品推荐
相关产品推荐

