fragment与activity及两个fragment之间的跳转实现

在项目中,我们使用到了Android Fragment技术。在应用的交互中,我可能需要实现:

1.从当前的fragment跳转到另一个fragment
2.从当前的fragment跳转到一个activity中
3.从当前的activity跳转到一个fragment中

网上提供的思路较多,这里总结了一套自己的方法。

一、从当前的fragment跳转到另一个fragment

1.在相应fragment全局中声明fragment管理对象及事务对象。
// Fragment管理对象
    private FragmentManager manager;
    private FragmentTransaction ft;
2.在OnCreate方法中初始化fragment管理对象
@Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        manager = getFragmentManager();
    }
3.从 FragmentManager 获得一个FragmentTransaction实例
MyJDEditFragment myJDEditFragment = new MyJDEditFragment();
ft = manager.beginTransaction();
//当前的fragment会被myJDEditFragment替换
ft.replace(R.id.realtabcontent, myJDEditFragment);
ft.addToBackStack(null);
ft.commit();
4.那么如何在fragment切换的时候还可以传递参数呢?

我们可以使用setArguments()方法绑定一个bundle对象传递到另外一个fragment中。

myJDEditFragment.setArguments(bundle);

在另外一个fragment中(myJDEditFragment)使用getArguments()可以拿到bundle对象。

二、从当前的fragment跳转到一个activity中

由于fragment可以使用 getActivity() 访问Activity实例,所以这一步实现很简单。

intent=new Intent(getActivity(), UserLoginActivity.class);
startActivity(intent);

三、从当前的activity跳转到一个fragment中

如果是从fragment跳转到activity中,然后想从这个activity中再跳转回fragment,这时直接finish这个activity即可。
如果需求是这样的:

在“我要提问”fragment1页面里点击“提交”跳转到“我的提问”里,该如何实现呢?
”我要提问“页面
“我的提问”页面

1、 在对应fragment1中使用意图跳转到MainActivity中,这里通过意图塞入了一个标识符(更严谨的方式是通过请求码和结果码实现)。
Intent intent = new Intent(getActivity(),ActivityHomeworkHelp_new.class);
intent.putExtra("flag", 1);
startActivity(intent);

2.在MainActivity的onResume()方法中得到这个标识符,并且切换到相应的Tab(fragment2)即可。

@Override
    protected void onResume() {
      int id = getIntent().getIntExtra("flag", 0);
      if (id == 1 ) {
          pager.setCurrentItem(1);
      }
      super.onResume();
    }

我用的是ViewPagerIndicator开源项目。

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. 创建一个新的Fragment类 首先,我们需要创建一个新的Fragment类。可以通过右键点击项目中的包名,选择New -> Fragment -> Fragment (Blank)来创建一个新的空白Fragment。 2. 编写Fragment布局文件 接下来,我们需要为Fragment编写布局文件。在res/layout文件夹中创建一个新的布局文件,命名为fragment_layout.xml。然后在该文件中添加所需的视图元素。 3. 在Activity中添加FragmentActivity中添加Fragment的步骤如下: (1)在Activity布局文件中添加Fragment占位符。 (2)在Activity中使用FragmentManager和FragmentTransaction来添加Fragment。 (3)在Activity实现Fragment的通信。 4. 实现Activity跳转Fragment实现Activity跳转Fragment,您需要执行以下步骤: (1)在Activity中实例化要跳转到的Fragment。 (2)使用FragmentManager和FragmentTransaction来添加Fragment。 下面是一个示例代码,演示如何实现Activity跳转Fragment: MainActivity.java ``` public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 实例化要跳转到的Fragment MyFragment myFragment = new MyFragment(); // 使用FragmentManager和FragmentTransaction来添加Fragment FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(R.id.fragment_container, myFragment); fragmentTransaction.commit(); } } ``` activity_main.xml ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.myapplication.MainActivity"> <!-- 添加Fragment占位符 --> <FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout> ``` MyFragment.java ``` public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_layout, container, false); return view; } } ``` fragment_layout.xml ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is my Fragment"/> </LinearLayout> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值