我对产品列表有活动,并将属性传递给Basket活动
产品列表活动中的代码:
zakazat.Click += delegate
{
var intent = new Intent(this, typeof(CartActivity));
intent.PutExtra ("title", (string)(firstitem ["post_title"]));
intent.PutExtra ("price", (string)(firstitem ["price"] + " грн"));
intent.PutExtra ("weight", (string)(firstitem ["weight"] + "г"));
StartActivity(intent);
收到篮子里的产品:
public void Display (){
LinearLayout display = FindViewById<LinearLayout> (Resource.Id.product1);
TextView productname = FindViewById<TextView> (Resource.Id.posttittle1);
TextView price = FindViewById<TextView> (Resource.Id.price1);
TextView weight = FindViewById<TextView> (Resource.Id.weight1);
price.Text = Intent.GetStringExtra("price");
productname.Text = Intent.GetStringExtra("title");
if (productname.Text == Intent.GetStringExtra ("title")) {
display.Visibility = ViewStates.Visible;
}
else {
display.Visibility = ViewStates.Gone;
}
weight.Text = Intent.GetStringExtra("weight");
}
我有两个问题,我在更改活动时如何保存此属性以及如何在后台传递此属性?
我有什么建议可以实现这个目标吗?
答案 0 :(得分:1)
你可以做两件事。
如果您不想以这种速度依赖SQLite,那么您将需要使用选项#2,因为它更容易,更快速地实现。
我们如何使用SharedPreferences?
首先,您必须在班级上声明一个ISharedPreference。
public class YourActivity : Activity
{
private ISharedPreferences prefs;
}
接下来,您需要在onCreate方法中初始化prefs变量。
prefs = PreferenceManager.GetDefaultSharedPreferences(this);
然后你可以将你的Intent额外内容写入这样的偏好:
ISharedPreferencesEditor editor = prefs.Edit ();
editor.PutString ("price", Intent.GetStringExtra("price"));
editor.PutString ("title", Intent.GetStringExtra("title"));
editor.PutString ("weight", Intent.GetStringExtra("weight"));
editor.Apply ();
编写首选项后,您想访问其中的数据。你必须这样做:
string price = prefs.GetString("price", "0");
string title = prefs.GetString ("title" , "");
string weight = prefs.GetString ("weight" , "");
//second argument in GetString(arg1, arg2) means a default value given to the variable if it is null
这样,即使关闭活动,您仍然可以检索SharedPreferences值。
请注意,您需要添加using Android.Preferences;
才能使用偏好设置。