0

在 monodroid 做一些操作时,我使用了 Intents。例如,在“保存的搜索”和“搜索”页面的一个应用程序中,我有一个活动,当我想调用这个活动时,我使用了这样的代码:

        var filename = SearchFileList [args.Position];
            Intent intent = new Intent (this, typeof(SearchAroundYouActivity));
            intent.PutExtra (AppConstants.SearchAction, AppConstants.SavedSearch);
            intent.PutExtra (AppConstants.SearchOption, StorageClass .SearchPath +"/" + filename + "/State.rsf");
            intent .PutExtra (AppConstants .SavedSearchName , StorageClass .SearchPath +"/" + filename);
            StartActivity (intent);

然后在创建活动中使用此代码:

action = Intent.GetStringExtra (AppConstants.SearchAction);
            if (action == AppConstants.SavedSearch) {
                NormalFilter = ((RPLApp)Application).typeOfShow.Content .filter .ToString ();
                ((RPLApp)Application).typeOfShow.Load (Intent.GetStringExtra (AppConstants.SearchOption));
                SaveName = Intent .GetStringExtra (AppConstants .SavedSearchName );
            }

通过这种方法,我可以检测是否加载保存的数据或运行新的搜索。

问题是这样的:我们如何在 monotouch 中做这样的事情?

也许我们可以在屏幕类中定义一些静态变量,然后检查它们的值是否适合这个提议,但是这样的解决方案是否是推荐的、好的和最好的方法呢?

4

1 回答 1

0

在 iOS 上,您应该能够像通常在 C# 中那样在 2 个类之间传递这些值。Android 在要求东西被序列化和传递方面有点奇怪Intent

因此,例如,您可以在点击事件中执行以下操作:

var myController = new MyController();
myController.SetSomeField = true; //Or pass anything you want in via properties or methods
PresentViewController(myController, true, null);

如果您想获得更多“跨平台-y”,您可以为两个平台使用信使实现。我这里有一个,我认为 MvvmCross 正在开发一个——不确定它是否还在。

于 2013-02-11T13:45:29.640 回答