试图让我的重置按钮使计数器归零

问题描述 投票:0回答:2

我目前正在尝试制作一个简单的应用,其中我有一个罢工,接球和重置按钮。按下击球按钮后,计数器将加1。如果击球计数器达到3,则将弹出一条消息,并重置计数器。相同的逻辑适用于球计数器。罢工和球计数器工作得很好,但重置不起作用。我以为将两个计数器都重置为0就是我下面的简单代码行。

这是我的主要活动:

package com.example.umpirebuddy;

import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.content.DialogInterface;
//import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    static final private String TAG = "Umpire Buddy v1.0";

    private int strike_count = 0;
    private int ball_count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG, "Starting onCreate...");
        setContentView(R.layout.activity_main);

        View StrikeButton = findViewById(R.id.strike_button);
        StrikeButton.setOnClickListener(this);

        updateStrikeCount();

        View BallButton = findViewById(R.id.ball_button);
        BallButton.setOnClickListener(this);

        updateBallCount();

        View ResetButton = findViewById(R.id.reset_button);
        BallButton.setOnClickListener(this);

        updateStrikeCount();
        updateBallCount();
    }

    private void updateStrikeCount() {
        TextView t = (TextView) findViewById(R.id.strike_count_value);
        t.setText(Integer.toString(strike_count));
    }

    private void updateBallCount() {
        TextView t = (TextView) findViewById(R.id.ball_count_value);
        t.setText(Integer.toString(ball_count));
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.strike_button:
                // Start count over if user tries to increment beyond 2.
                if (strike_count == 2) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.setTitle("Strike Out");
                    builder.setMessage("Batter is out!");
                    builder.setCancelable(false);
                    builder.setPositiveButton("Next Batter", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            strike_count = 0;
                            updateStrikeCount();

                            ball_count = 0;
                            updateBallCount();
                        }
                    });
                    builder.show();
                } else {
                    strike_count++;
                }
                break;
            case R.id.ball_button:
                // Start count over if user tries to increment beyond 3.
                if (ball_count == 3) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.setTitle("Walk");
                    builder.setMessage("Batter walks!");
                    builder.setCancelable(false);
                    builder.setPositiveButton("Next Batter", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            strike_count = 0;
                            updateStrikeCount();

                            ball_count = 0;
                            updateBallCount();
                        }
                    });
                    builder.show();
                } else {
                    ball_count++;
                }
                break;
            case R.id.reset_button:
                ball_count = 0;
                updateBallCount();
                strike_count = 0;
                updateStrikeCount();
                break;
        }
        updateStrikeCount();
        updateBallCount();
    }
}

这是我的activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/strike_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/strike_label"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#ffffff"
        android:textSize="30sp"
        tools:layout_editor_absoluteX="148dp"
        tools:layout_editor_absoluteY="145dp" />

    <TextView
        android:id="@+id/strike_count_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/strike_label"
        android:layout_marginStart="34dp"
        android:layout_marginLeft="34dp"
        android:layout_marginTop="4dp"
        android:layout_toEndOf="@id/strike_label"
        android:layout_toRightOf="@id/strike_label"
        android:text="@string/strike_count_value"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#ffffff"
        android:textSize="30sp"
        tools:layout_editor_absoluteX="245dp"
        tools:layout_editor_absoluteY="225dp" />

    <TextView
        android:id="@+id/ball_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/strike_label"
        android:layout_alignEnd="@+id/strike_label"
        android:layout_alignRight="@id/strike_label"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="22dp"
        android:layout_marginRight="22dp"
        android:text="@string/ball_label"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#ffffff"
        android:textSize="30sp"
        tools:layout_editor_absoluteX="165dp"
        tools:layout_editor_absoluteY="225dp" />

    <TextView
        android:id="@+id/ball_count_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/ball_label"
        android:layout_marginStart="35dp"
        android:layout_marginLeft="35dp"
        android:layout_marginTop="0dp"
        android:layout_toEndOf="@id/ball_label"
        android:layout_toRightOf="@id/ball_label"
        android:text="@string/ball_count_value"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#ffffff"
        android:textSize="30sp"
        tools:layout_editor_absoluteX="245dp"
        tools:layout_editor_absoluteY="145dp" />

    <Button
        android:id="@+id/strike_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/ball_label"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginStart="2dp"
        android:layout_marginLeft="2dp"
        android:layout_marginTop="205dp"
        android:layout_marginEnd="-2dp"
        android:layout_marginRight="-2dp"
        android:text="@string/strike_button_label"
        android:textSize="30sp"
        tools:layout_editor_absoluteX="138dp"
        tools:layout_editor_absoluteY="314dp" />

    <Button
        android:id="@+id/ball_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/strike_button"
        android:layout_alignStart="@+id/strike_button"
        android:layout_alignLeft="@id/strike_button"
        android:layout_alignEnd="@+id/strike_button"
        android:layout_alignRight="@id/strike_button"
        android:text="@string/ball_button_label"
        android:textSize="30sp"
        tools:layout_editor_absoluteX="157dp"
        tools:layout_editor_absoluteY="400dp" />

    <Button
        android:id="@+id/reset_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/ball_button"
        android:layout_alignStart="@id/ball_button"
        android:layout_alignLeft="@id/ball_button"
        android:layout_alignEnd="@id/ball_button"
        android:layout_alignRight="@id/ball_button"
        android:text="@string/reset_button_label"
        android:textSize="30sp"
        tools:layout_editor_absoluteX="148dp"
        tools:layout_editor_absoluteY="500dp" />

</RelativeLayout>
java android android-button
2个回答
0
投票

请删除通话对象

updateStrikeCount();updateBallCount();

单击结束时,即使两次单击重置,这也会使您更新。

所以最终代码变成

    @Override
   public void onClick(View v) {
       switch (v.getId()) {
           case R.id.strike_button:
               // Start count over if user tries to increment beyond 2.
               if (strike_count == 2) {
                   AlertDialog.Builder builder = new AlertDialog.Builder(this);
                   builder.setTitle("Strike Out");
                   builder.setMessage("Batter is out!");
                   builder.setCancelable(false);
                   builder.setPositiveButton("Next Batter", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           strike_count = 0;
                           updateStrikeCount();

                           ball_count = 0;
                           updateBallCount();
                       }
                   });
                   builder.show();
               } else {
                   strike_count++;
               }
               break;
           case R.id.ball_button:
               // Start count over if user tries to increment beyond 3.
               if (ball_count == 3) {
                   AlertDialog.Builder builder = new AlertDialog.Builder(this);
                   builder.setTitle("Walk");
                   builder.setMessage("Batter walks!");
                   builder.setCancelable(false);
                   builder.setPositiveButton("Next Batter", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           strike_count = 0;
                           updateStrikeCount();

                           ball_count = 0;
                           updateBallCount();
                       }
                   });
                   builder.show();
               } else {
                   ball_count++;
               }
               break;
           case R.id.reset_button:
               ball_count = 0;
               updateBallCount();
               strike_count = 0;
               updateStrikeCount();
               break;
       }

   }

欢迎其他任何问题。


0
投票

结果证明这是我的MainActivity.java中的一个小错误,>

View ResetButton = findViewById(R.id.reset_button);
BallButton.setOnClickListener(this);

BallButton应该是ResetButton。复制和粘贴前几行代码很愚蠢的错误。 :)

© www.soinside.com 2019 - 2024. All rights reserved.