【问题标题】:Where and how can I store data that is accessible from multiple Activities?我可以在哪里以及如何存储可从多个活动访问的数据?
【发布时间】:2021-04-27 08:14:46
【问题描述】:

我正在处理card game(不常见 52 张扑克牌,但拥有具有自己价值的牌)。 我有 2 个活动,CardsToChoose 和 Deck。

我现在的问题是,我不知道如何显示我在Deck 中选择的卡片。 我在哪里存储这些卡的值,以便我可以使用该卡组?

  • 尝试了 Intent,但太复杂了
  • 也许使用 Objects 是可能的,但我不知道它是如何工作的……

我的卡片结构(尚未编码,因为如前所述,我不知道将该代码放在哪里。我知道我只有一个页面,其中包含我的卡片的可点击 ImageView(“CardsToChoose”)):

Name: Card1
Value: score += 1 (If you play that card, the score goes up by 1)

我希望有人能解释一下它是如何工作的

【问题讨论】:

    标签: android arrays object kotlin android-activity


    【解决方案1】:

    这种情况适用于您只需要一张卡的情况:

    如果卡片不是通常的 52,但仍然假设您定义了 3 卡片、a、b 和 c。从Deck Activity 你想选择一张卡片并移动到CardsToChoose Activity 你可以在Activity 之外创建一个名为Card.kt 的单独文件并将卡片的数据存储在那里。现在,在Deck Activity 中,您可以使用integer 来引用这些卡片,比如1 对应card a,2 对应card b 和3 对应card c。现在,当用户在Deck Activity 并选择一张卡片并想要移动到CardsToChoose Activity 时,您可以根据他使用intent.putExtra("cardIndex", your_integer); 选择的卡片传递此integer

    现在在CardsToChoose Activity 中,您可以从 Intent 获取索引。

    对于有多个 cardIndexes 的情况

    对于要传递多个cardIndexes 的情况,您可以传递array 或使用ViewModel 在活动之间共享数据。以下是如何传递Integer 卡片索引数组:

    假设 1 和 2 是选定的卡片索引

    int array[] = {1,2};

    Intent i = new Intent(DeckActivity.this, CardsToChooseActivity.class);
    i.putExtra("numbers", array);
    startActivity(i);
    

    然后您可以使用以下方法在 CardsToChooseActivity 中接收数组:

    Bundle extras = getIntent().getExtras();
    int[] arrayB = extras.getIntArray("numbers");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多