在片段和活动之间传递数据然后向后传递?

时间:2016-06-13 04:51:05

标签: c# android android-fragments xamarin xamarin.android

我有1个活动(上传)和1个片段(资源管理器)。

上传将一个字符串发送到资源管理器,然后从资源管理器中检索它。

流程:上传>资源管理器>上传

当我尝试使用:

传递字符串时

上传>资源管理器

loadButton.Click += delegate {
           var FilePicker = new Intent(this, typeof(FilePickerActivity));
            FilePicker.PutExtra("CodigoReal", foldercreate);
            StartActivity(FilePicker);
        };

并在我的Fragment类中使用:

检索它

资源管理器>上传

 var Uploaded = new Intent(Activity,typeof(Upload));
            Uploaded.PutExtra("Path", path);
            string foldercreate2 = Uploaded.GetStringExtra("CodigoReal") ?? "La informacion no esta disponible.";
            Uploaded.PutExtra("CodigoReal", foldercreate2);
            Toast.MakeText(Activity, foldercreate2, ToastLength.Short).Show();
            StartActivity(Uploaded);

数据未通过。我究竟做错了什么?

2 个答案:

答案 0 :(得分:0)

您可以使用SharedPreferences,它易于使用。

SET

SharedPreferences prefs =
     getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE);

SharedPreferences.Editor editor = prefs.edit();
editor.putString("email", "modificado@email.com");
editor.putString("nombre", "Prueba");
editor.commit();

获取

SharedPreferences prefs =
     getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE);

String correo = prefs.getString("email", "por_defecto@email.com");

full example

答案 1 :(得分:0)

我对Xamarin并不熟悉,但您似乎正在尝试在后向回调中启动新的Activity(Explorer> Upload)。相反,您始终可以使用片段上下文访问您的活动:

(MyActivityClass)getContext();

并使用任何适当的方法。 但是你的技术并不是绝对错误的。如果您将活动launchMode设置为' singeTop',则不会创建新活动,并且将使用现有活动。在这种情况下,您将在onNewIntent活动回调中收到具有新意图的回调。

希望,它会帮助。