Значения настроены для добавления в словарь, но словарь значений не содержит отправленных ключей и значений - PullRequest
0 голосов
/ 30 июня 2018

Я новичок в разработке приложений 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 по-прежнему.

Заранее спасибо за помощь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...