【问题标题】:Counter app button click history log计数器应用按钮点击历史记录
【发布时间】:2014-09-25 20:08:44
【问题描述】:

我在过去一个月左右的时间里开发了一个计数器应用程序,作为我玩的纸牌游戏的记分配套应用程序。

我已经快要完成它了,但我无法理解如何创建点击了哪些按钮的历史记录/日志。该应用程序本身有 4 个计数器(每个玩家 2 个),我想要一个在访问时显示按钮被点击的次数的活动。例如,如果一名玩家有 5 个 +1 指示物,而另一名有 2 个 +1 指示物,则历史活动应显示这一点,并在此后每次加减。如果一个玩家有+2,然后几分钟后有另一个+2,我希望它说出每次在它旁边添加的总金额以及按下按钮的时间。 比如这样:

17:32:12 | 22 | +2

17:34:43 | 25 | +3

17:36:12 | 21 | -4

17:39:51 | 15 | -6,以此类推……

主要活动包含所有计数器(按钮和文本视图),我在该活动中有一个按钮,可将我发送到我希望显示所有这些数据的历史活动。 这是我的 player1 添加按钮的 sn-p 或 onClick 方法

p1AddL.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            final MediaPlayer buttonSound = MediaPlayer.create(MainActivity.this, R.raw.button_points);
            SharedPreferences muteButton = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
            final boolean soundEffects = muteButton.getBoolean("mutebutton", true);
            p1AddL.startAnimation(a);
            if (soundEffects == false)
                buttonSound.start();
            counter1 ++;
            count1 ++;
            if (count1 == 0) {
                if (counter1 >= 9|counter1 <= -1) {
                    lifepointsP1.setText("" + counter1);
                } else
                    lifepointsP1.setText("0" + counter1);
            } else {
                if (count1 > 0) {
                    lifepointsP1.setText("+" + count1);
                    lifepointsP1.setTextColor(Color.GREEN);
                }
                Runnable clickButton = new Runnable() {
                @Override
                public void run() {
                    count1 = 0;
                    lifepointsP1.setTextColor(Color.WHITE);
                    if (counter1 >= 9|counter1 <= -1) {
                        lifepointsP1.setText("" + counter1);
                    } else
                        lifepointsP1.setText("0" + counter1);
                }
            };
            p1AddL.postDelayed(clickButton, 2000);
            }
        }
    });

当按钮被按下时,它会将文本视图更改为绿色 +1、+2、+3 等,具体取决于按下添加按钮的次数。在 2 秒没有按下按钮后,它会将 textview 更改回以白色显示的总数。

我确信这可能是两个活动之间的简单数据发送和接收方法,但我无法解决。

非常感谢您的帮助

【问题讨论】:

    标签: android counter buttonclick data-transfer scoring


    【解决方案1】:

    听起来您需要使用 Intent。 Intent 可用于启动新 Activity,但您也可以将数据添加到 Intent 以传输到新 Activity。

    这是一个例子。您可以将此代码插入到您的历史按钮 onClick 方法中。

    Intent intent = new Intent(getApplicationContext(), YourHistoryActivity.class);
    intent.putStringArrayListExtra("DATA_KEY", data);
    startActivity(intent);
    

    然后,在 History Activity 的 onCreate 中,您可以像这样检索数据:

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        ArrayList<String> data = extras.getStringArrayListExtra("DATA_KEY");
    }
    

    在此示例中,我使用了一个名为“data”的字符串 ArrayList,因为这是您可以存储会话评分信息的一种方式,但在这方面有很多选项,这取决于您要如何管理你的数据。

    有关 Intent 的更多信息,请访问 herehere

    【讨论】:

    • 是的,好吧,这似乎是一个很好的解决方法。我了解如何使用意图,但不确定数组。我是否只需将每个按钮单击插入数组中的新项目?我该怎么办?
    • ArrayList 并不完全像数组。不过,它们更容易用于这种情况。您可以创建一个 ArrayList,然后添加新项目非常容易,只需执行 arrayListName.add(item),其中 arrayListName 是您声明的 ArrayList,而 item 是您要添加到列表中的匹配对象。在您的情况下,对象可能是您定义的对象,也可能只是一个字符串。例如,该字符串可能只是 date + newTotal + pointsAdded。然后在您的历史活动中,只需遍历 ArrayList 打印项目(如果它们是字符串)。
    • 字符串的 ArrayList 可以这样声明: ArrayList myList = new ArrayList();
    • 显示历史信息的最佳方式可能是在 History Activity 中使用 ListView,并使用 ArrayList 和 ArrayAdapter 填充 ListView。这里有一个例子:stackoverflow.com/questions/5070830/…
    • 是的,这似乎对我有用。我已经设置了主活动列表数组,但我无法将该数据发送到新的匹配历史活动,然后实施到数组适配器中。我的主要活动中没有按钮可以直接带我进入比赛历史活动,所以我不能只通过意图发送数组列表。虽然,如果我必须将数据保存到共享首选项,它一次只会执行一个字符串,然后每次输入新数据时只覆盖以前的字符串。您建议我在这里做什么以将数据发送到其他活动?
    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多