0

いくつかの操作を行うためのモノドロイドでは、インテントを使用しました。たとえば、「保存された検索」ページと「検索」ページの両方の 1 つのアプリで、1 つのアクティビティがあり、このアクティビティを呼び出したいときに、次のようなコードを使用しました。

        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 );
            }

この方法により、保存されたデータをロードするか、新しい検索を実行するかを検出できます。

問題はこれです:モノタッチでこのようなことをどのように行うことができますか?

画面クラスでいくつかの静的変数を定義し、この提案の値を確認することは可能かもしれませんが、このような解決策がこれを行うための推奨され、適切で最良の方法であるかどうか?

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);

さらに「クロスプラットフォーム」を実現したい場合は、両方のプラットフォームでメッセンジャーの実装を使用できます。ここに1 つあり、MvvmCross が 1 つに取り組んでいると思います。まだそこにあるかどうかはわかりません。

于 2013-02-11T13:45:29.640 に答える