问题描述
我是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");