Xamarin.Android中的Fragment

这篇具有很好参考价值的文章主要介绍了Xamarin.Android中的Fragment。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、Activity中使用Fragment

一般而言,会在activity中添加一个加载fragment的方法。通过点击菜单的按钮,加载不同的fragment。其样子一般是这样的:

public void LoadFragment(int id,string detailFragment,string fragmentArgs)
{
   try {

       AndroidX.Fragment.App.Fragment fragment = null;

       switch (id)
       {
           case Resource.Id.menu_workspace:
               fragment = WorkspaceMainFragment.NewInstance(id);//传入某个/些参数
               break;
           case Resource.Id.menu_hospital:
               fragment = HospitalFragment.NewInstance();
               break;
           case Resource.Id.menu_mine:
               fragment = LoginFragment.NewInstance();
               break;

           default:
               break;
       }
       if (fragment == null)
           return;

       SupportFragmentManager.BeginTransaction()
          .Replace(Resource.Id.content_frame, fragment)
          .AddToBackStack(null) //支持回退
          .Commit();
   }
   catch(Exception ex)
   {
       Toast.MakeText(this, "发生异常!异常信息如下:LoadFragment" + ex.Message, ToastLength.Long).Show();
   }
}

fragment中往往通过工厂模式,提供及返回实例

public class PlayQuoteFragment : Fragment
{
		//这儿是一个属性。通过Arguments获取数据
    public int PlayId => Arguments.GetInt("current_play_id", 0);

		//这儿是通过工厂模式,提供fragment的实例
    public static PlayQuoteFragment NewInstance(int playId)
    {
    	 //Bundle其实放在这儿,或者放到activity的LoadFragment方法中都是可以的
    	 //但放在这儿会更好。若放在activity中,则需要命名不同的Bundle
    	 //放在这儿,可以实现对外,只是一个工厂方法和参数即可。外界不需要知道内部的具体事务
        var bundle = new Bundle();
        bundle.PutInt("current_play_id", playId);
        return new PlayQuoteFragment {Arguments = bundle};
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        if (container == null)
        {
            return null;
        }

        var textView = new TextView(Activity);
        var padding = Convert.ToInt32(TypedValue.ApplyDimension(ComplexUnitType.Dip, 4, Activity.Resources.DisplayMetrics));
        textView.SetPadding(padding, padding, padding, padding);
        textView.TextSize = 24;
        textView.Text = Shakespeare.Dialogue[PlayId];

        var scroller = new ScrollView(Activity);
        scroller.AddView(textView);

        return scroller;
    }
}

2、Fragment与Activity通信

非常简单,因为fragment一定是要寄存到某个activity中。因此直接使用如下代码:

var myActivity = (MyActivity) this.Activity;
myActivity.SomeCustomMethod();

3、Fragment与其他的Fragment通信

通过FragmentManager查找ID,获取fragment文章来源地址https://www.toymoban.com/news/detail-683319.html

var emailList = FragmentManager.FindFragmentById<EmailListFragment>(Resource.Id.email_list_fragment);
emailList.SomeCustomMethod(parameter1, parameter2);

到了这里,关于Xamarin.Android中的Fragment的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • C#使用xamarin进行跨平台开发

    使用 Xamarin 进行跨平台开发可以使用 C# 和 .NET 平台来开发移动应用程序,同时将代码在多个主要移动操作系统上运行,包括 Android 和 iOS。以下是在 C# 中使用 Xamarin 进行跨平台开发的一般步骤: 安装 Xamarin : 在开始之前,你需要安装 Xamarin 开发环境。你可以选择安装 Visual

    2024年02月11日
    浏览(42)
  • PLC-IoT 网关开发札记(6): Xamarin.Forms 的 CollectionView 绑定了什么?

    PLC-IoT 网关开发札记(6): Xamarin.Forms 的 CollectionView 绑定了什么?

    项目开发中不可避免地会遇到在一个页面中呈现列表的情况,使用 CollectionView 作为容器是很方便的。CollectionView 中显示的数据对应于后台的一个 IEnumerable 派生的列表,常用的是 ListT 和 VectorT,我习惯于使用 ListT 作为后台的数据表。 CollectionView 的每一项对应后台的 ListT 的一

    2024年01月23日
    浏览(9)
  • Android 中 Fragment判空

    1. 判断 Fragment 是否已经被添加到 Activity 中,可以通过 Fragment 的 isAdded() 方法来判断。 2. 判断 Fragment 的 View 是否已经被创建,可以通过 Fragment 的 getView() 方法来判断。 3. 判断 Fragment 是否已经被销毁,可以通过 Fragment 的 isDetached() 或 isRemoving() 方法来判断。 示例: if (fragmen

    2024年02月11日
    浏览(9)
  • Android Fragment动画实现

    在 Android 中,你可以使用 FragmentTransaction 来实现 Fragment 的动画效果。这允许你在添加、替换或移除 Fragment 时应用动画,从而改善用户体验。下面是如何实现 Fragment 动画的基本步骤: 1. 创建两个 Fragment: 首先,创建两个 Fragment,例如 FragmentA 和 FragmentB。这些 Fragment 将被用于

    2024年02月09日
    浏览(9)
  • Android 基于Fragment的权限封装

    业内普遍比较认可使用另外一种小技巧来进行实现。是什么小技巧呢?回想一下,之前所有申请运行时权限的操作都是在 Activity 中进行的,事实上,Android 在 Fragment 中也提供了一份相同的 API,使得我们在 Fragment 中也能申请运行时权限。 但不同的是,Fragment 并不像 Activity 那

    2024年01月23日
    浏览(9)
  • android - fragment 数据丢失?状态丢失?

    最佳答案 一些状态丢失的例子: 1.  假设您有一个按钮和一个 TextView 。在代码中,你已经定义了初始值为 0 的整数 i,它通过单击按钮递增 1,并且它的值显示在 TextView 中。假设你已经按下按钮 5 次,那么 textview 将被设置为 0。也就是说  Integer 在屏幕变化时丢失了它的值 。

    2024年02月10日
    浏览(12)
  • Android studio心得——fragment动态加载

    Android studio心得——fragment动态加载

    在Android应用程序中,Fragment是一种可以嵌入Activity中的组件。通过 Fragment,我们可以将UI 目录 前言 一、什么是Android Studio 二、简介Fragment 三、学期知识汇总 四、什么是碎片(Fragment) 五、页面实现步骤 1.程序APP主界面的常用例子 2.定义4个Fragment 3.activity_main.xml代码展示 4.四个

    2024年02月09日
    浏览(11)
  • Android ViewPager2 + Fragment 联动

    Android ViewPager2 + Fragment 联动

    本篇主要介绍一下 ViewPager2 + Fragment , 上篇中简单使用了ViewPager2 实现了一个图片的滑动效果, 那图片视图可以滑动, ViewPager2也可以滑动 Fragment 概述 ViewPager2 官方对它的描述就是 以可滑动的格式显示视图或 Fragment 也就说明提供了滑动Fragment的实现 并且还很简单, 下面来看看吧

    2023年04月08日
    浏览(9)
  • Android Activity和Fragment的对比

    Android Activity和Fragment的对比

    参考来源 参考来源 参考来源 onAttach() 作用:fragment已经关联到activity,这个时候 activity已经传进来了, 获得activity的传递的值 就可以进行 与activity的通信里, 当然也可以使用getActivity(),前提是这个fragment已经和宿主的activity关联,并且没有脱离,有且只有调用一次。 onCreate(

    2024年02月11日
    浏览(11)
  • 展开说说:Android Fragment完全解析-卷一

    展开说说:Android Fragment完全解析-卷一

    Fragment   中文意思是碎片,Android 3.0推出的一个系统组件,主打一个在 应用界面中 可模块化又 可重复使用。 F ragment 它很独立,它可以 定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。 F ragment 很粘人,它 不能独立存在。它们必须由 activity 或其

    2024年04月25日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包