我真的需要使用Intent来调用活动吗?

时间:2019-12-24 22:44:38

标签: c# xamarin xamarin.android

我真的需要使用Intent来致电活动表格,如下所示吗?如您所见,我还传递了诸如Dog之类的某些对象,并在OnCreate方法内接受了第三次活动。我的问题是,就像我可以在第三个活动中创建构造函数并在其中传递一些参数,而不是使用Intentbundle传递值一样,或者就像必须这样做一样方式吗?

我将第三项活动称为其他活动:

private void OpenOtherActivityWindow_Click(object sender, EventArgs e)

{
      Intent nextActivity = new Intent(this, typeof(ThirdActivity));
      Dog mydog = new Dog("mydogName");
      Bundle bundle = new Bundle();
      bundle.PutSerializable("mydoggy", mydog);
      nextActivity.PutExtra("RowID", Convert.ToString(10));
      nextActivity.PutExtras(bundle);
      StartActivity(nextActivity);
}

第三活动:

 [Activity(Label = "ThirdActivity")]
 public class ThirdActivity : Activity
 {
       protected override void OnCreate(Bundle savedInstanceState)
       {
            base.OnCreate(savedInstanceState);

            // Create your application here
            SetContentView(Resource.Layout.third);

            //Receive values if any from previous activity
            if (!Intent.HasExtra("mydoggy")) return;
            Dog tryme = (Dog)Intent.GetSerializableExtra("mydoggy");
            if (!Intent.HasExtra("RowID")) return;
            string text = Intent.GetStringExtra("RowID") ?? "0";
        }
}

1 个答案:

答案 0 :(得分:-2)

根据Selvin,这些构造函数必须保持无参数。我没有相反的信息。但这并不意味着您不能使其更容易使用/创建这些实例。

选项1-工厂方法:

通常,在构造函数为Private的情况下,请使用Factory方法。这样的想法是必须在运行时完成一些工作,您不想与类的普通用户面对。或者您正在使用单例模式。

调用公共构造函数然后设置一些公共字段的函数可能很奇怪,但有可能

选项2-初始化程序:

Object Initializers是C#中的东西。现在,了解初始化器与参数化构造器不相同是非常重要的。这只是语法糖。使用Initializer调用无参数构造函数,然后将值分配给公共变量/字段,就像您在多行代码中写的一样。

选项3-反向链接:

通常,在链接构造函数时,您将链接从具有 least 参数的一个到具有 most 的一个。每一步都添加一个新的默认值。 Nromal方向远离无参数构造函数。请记住,一旦添加任何构造函数,隐式无参数构造函数将不再存在-您必须使其成为显式的。

假设它不是您要处理的密封类,或者特定情况将其限制为单个构造函数,则可以对其进行子类化并添加许多参数化的构造函数。 Wich都只是通过链接来调用parameterelss基本构造函数,然后分配值。

如果您确实遇到了一种有问题的情况:特别是对于这些情况,已经发明了扩展方法。