从片段获取数据到另一类

问题描述

我是xamarin android的新手。我每次都有一个片段出现。在它里面,我有一个变量id,我需要它,但我不知道如何获得它。当有人扫描他的卡时,我得到了ID,但完整的操作在该片段内。

这是活动中的代码

if (savedInstanceState == null)
{
    FragmentTransaction transaction = FragmentManager.BeginTransaction();
    var fragment = new cardreaderFragment();
    transaction.Replace(Resource.Id.sample_content_fragment,fragment);
    transaction.Commit();

}

然后从该片段中我有“ card_account_field”的代码开始,在其他班级中需要它。

if (v != null)
{
    mAccountField = (TextView)v.FindViewById(Resource.Id.card_account_field);
    mcardreader = new cardreader(new WeakReference<cardreader.AccountIdCard>(this));
    // disable Android Beam and register our card reader callback
    EnableReaderMode();
}

我只需要获取mAccountField并在我的MainActivity中使用它,但是该变量位于片段框中。我能以某种方式传递其价值吗?

解决方法

您可以使用ISharedPreferences来实现

在片段中,当您获得ID时,可以使用ISharedPreferences来存储它。

            ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
            ISharedPreferencesEditor editor = prefs.Edit();
            editor.PutString("ID","12345");
            // editor.Commit();    // applies changes synchronously on older APIs
            editor.Apply();        // applies changes asynchronously on newer APIs

然后,您可以随意获取ID。

 ISharedPreferences prefs1 = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
          string  myID = prefs1.GetString("ID","1");