安卓中view、activity、fragment之间的相互跳转

在我们项目中经常碰到activity与fragment互相跳转的问题,其中解决方法大约也就那么几种,我以其中一个案例说一下,我要从自定义view跳转到fragment,当然不能之间跳转了我跳转到fragment所在的mainactivity里面


这时,我在MainActivity里面接收,也就是在它的onresume方法里面接收呢,如下图

因为我采用fragtablayout做的所以我只需要设置它到哪一个fragment就可以了。

还有另外一种方法是当我不用tabhost做的时候 

private FragmentMine mFOne;  

private FragmentCircle mFTwo; mFOne = new FragmentMine ();  

FragmentManager fm = getFragmentManager();  

FragmentTransaction tx = fm.beginTransaction();  

tx.add(R.id.id_content, mFOne, "ONE"); tx.hide(mFTwo);  

tx.commit();

这种是针对隐藏布局的那种方法其实说白了就是activity跳转到fragment。因为我不管自定义view还是什么我都要在activity上面显示,也就是跳转到fragment。




private FragmentMine mFOne; private FragmentCircle mFTwo; mFOne = new FragmentMine (); FragmentManager fm = getFragmentManager(); FragmentTransaction tx = fm.beginTransaction(); tx.add(R.id.id_content, mFOne, "ONE"); tx.hide(mFTwo); tx.commit();

在 Android ,可以通过 FragmentManager 将一个 Fragment 替换为另一个 Fragment,从而实现 Fragment 之间跳转。以下是一个简单的示例: 1. 在 Activity 布局一个 FrameLayout,作为 Fragment 的容器: ```xml <FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 创建需要跳转Fragment,例如 FragmentA 和 FragmentB: ```java public class FragmentA extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_a, container, false); // TODO: 初始化 FragmentA 的布局和逻辑 return view; } } public class FragmentB extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_b, container, false); // TODO: 初始化 FragmentB 的布局和逻辑 return view; } } ``` 3. 在 Activity 获取 FragmentManager,并将 FragmentA 添加到容器: ```java FragmentManager fragmentManager = getSupportFragmentManager(); FragmentA fragmentA = new FragmentA(); fragmentManager.beginTransaction() .add(R.id.fragment_container, fragmentA) .commit(); ``` 4. 在 FragmentA 通过点击事件等方式触发跳转FragmentB: ```java FragmentB fragmentB = new FragmentB(); fragmentManager.beginTransaction() .replace(R.id.fragment_container, fragmentB) .addToBackStack(null) // 将 FragmentA 添加到返回栈 .commit(); ``` 5. 在 FragmentB 通过点击事件等方式触发返回到 FragmentA: ```java fragmentManager.popBackStack(); // 弹出返回栈FragmentA ``` 注意事项: - 每个 Fragment 都需要布局自己的 UI 和逻辑; - 在跳转时,使用 replace() 方法替换当前Fragment,而不是 add() 方法添加新的 Fragment; - 如果需要支持返回操作,可以将当前Fragment 添加到返回栈,然后在返回时弹出返回栈Fragment
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值