Я новичок в разработке приложений xamarin и, честно говоря, в целом, C #, поскольку я всего лишь младший (это мое первое большое приложение), поэтому, если я предоставляю слишком мало информации, я извиняюсь, но я изо всех сил стараюсь объяснить моя проблема.
У меня есть интерфейс, в котором определен словарь, поэтому его можно использовать между двумя различными действиями. 1 действие состоит в том, чтобы поместить ключи и значения в словарь, а другое - в отображение ключей и значений на экране. Вот мой код интерфейса:
public interface IItemList
{
IDictionary<string,int> Items
{
get;
set;
}
}
Моя основная задача - установить ключи и значения в словаре, вот код для моей основной деятельности (не беспокойтесь о нерелевантных ошибках в моем коде. Я удалил некоторые нерелевантные части для этого поста):
public class MainActivity : AppCompatActivity, IItemList
{
int qtyPart1NewQty;
//Value of all qntys
int value = 0;
TextView _partOneItemName;
IDictionary<string, int> _items;
public IDictionary<string, int> Items
{
get => _items;
set => _items = value;
}
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
_items = new Dictionary<string, int>();
//Setting the content view
SetContentView(Resource.Layout.HomePageLayout);
//Making sure Btn has value upon creation
UpdateBtnText();
//Part 1 (which is linked to qauntyviewbtnpart1)
_partOneItemName = FindViewById<TextView>
(Resource.Id.textPart1);
//quantityViewBtnPart1
var qtyPart1 = FindViewById<QuantityView>
(Resource.Id.quantityViewBtnPart1);
qtyPart1.QuantityChanged += QtyPart1_QuantityChanged;
var cartBtn = FindViewById<Button>(Resource.Id.button1);
cartBtn.Click += CartBtn_Click;
}
void QtyPart1_QuantityChanged(object sender,
QuantityView.OnQuantityChangeEventArgs e)
{
qtyPart1NewQty = e.NewQuantity;
if (qtyPart1NewQty >= 1)
{
try
{
_items.Add(_partOneItemName.Text, qtyPart1NewQty);
}
catch
{
_items.Remove(_partOneItemName.Text);
_items.Add(_partOneItemName.Text, qtyPart1NewQty);
}
}
var btn = FindViewById<Button>(Resource.Id.button1);
UpdateBtnText();
}
}
Наконец, вот второе действие, в котором я хочу отобразить ключи и значения словаря:
public class BasketPageActivity : Activity, IItemList
{
TextView basketTextView1;
IDictionary<string, int> _items;
public IDictionary<string, int> Items
{
get => Items;
set => Items = value;
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
_items = new Dictionary<string, int>();
SetContentView(Resource.Layout.BasketPageLayout);
var btn = FindViewById<Button>(Resource.Id.itemListBtn);
btn.Click += ItemListBtn_Click;
basketTextView1 = FindViewById<TextView>
(Resource.Id.basketTextView);
DisplayItemsOnScreen();
}
void ItemListBtn_Click(object sender, EventArgs e)
{
Intent myIntent = new Intent(this, typeof(MainActivity));
StartActivity(myIntent);
}
void DisplayItemsOnScreen()
{
basketTextView1.Text = "Keys : " + _items.Keys;
}
}
Так что просто для того, чтобы учесть; ключи и значения (string, int) в первом словаре даже не входят в словарь. При отладке плохо наведите курсор на значения словаря после того, как предполагается, что они будут добавлены и значение = 0 по-прежнему.
Заранее спасибо за помощь:)