有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

[AndroidJava]学习安卓,布局只工作一次

我正在学习如何制作安卓应用程序,作为我的第一个项目,我正在尝试制作一个愚蠢的游戏哈哈

当我进行第二项活动时,游戏会按原样运行(如下图所示) http://i.imgur.com/BBllAJU.png?1

总比什么都没变,分数,数字,但所有的祝酒词都还在

package com.example.moshik.whatisbigger;

import 安卓.content.Intent;
import 安卓.os.Bundle;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.support.v7.widget.Toolbar;
import 安卓.text.DynamicLayout;
import 安卓.text.Layout;
import 安卓.view.View;
import 安卓.widget.TextView;
import 安卓.widget.Toast;
import java.util.Random;

public class NormalModeActivity1 extends AppCompatActivity {

int Score = 0;
boolean AnswerBig = false;
boolean AnswerEqual = false;
boolean AnswerSmall = false;
int counter = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_normal_mode1);
    Random rnd = new Random();


    while (counter < 5) {


        int Number1 = rnd.nextInt(99) + 1;
        TextView X = (TextView) findViewById(R.id.XNumber);
        String Xstring = String.valueOf(Number1);
        X.setText(Xstring);

        int Number2 = rnd.nextInt(99) + 1;
        TextView Y = (TextView) findViewById(R.id.YNumber);
        String Ystring = String.valueOf(Number2);
        Y.setText(Ystring);

        if (Number1 > Number2) {
            AnswerBig = true;
        }
        if (Number1 == Number2) {
            AnswerEqual = true;
        }
        if (Number1 < Number2) {
            AnswerSmall = true;
        }

        findViewById(R.id.Bigger).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (AnswerBig) {
                    Toast.makeText(NormalModeActivity1.this, "(BIG)You are RIGHT!", Toast.LENGTH_SHORT).show();
                    Score++;
                    AnswerBig = false;
                } else {
                    Toast.makeText(NormalModeActivity1.this, "(BIG)You were WRONG!", Toast.LENGTH_SHORT).show();
                }
            }
        });
        findViewById(R.id.Equal).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (AnswerEqual) {
                    Toast.makeText(NormalModeActivity1.this, "(Equal)You were RIGHT!", Toast.LENGTH_SHORT).show();
                    Score++;
                    AnswerEqual = false;
                } else {
                    Toast.makeText(NormalModeActivity1.this, "(Equal)You were WRONG!", Toast.LENGTH_SHORT).show();
                }
            }
        });
        findViewById(R.id.Smaller).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (AnswerSmall)
                {

                    Toast.makeText(NormalModeActivity1.this, "(Small)You were RIGHT!", Toast.LENGTH_SHORT).show();
                    Score++;
                    AnswerSmall = false;

                } else {
                    Toast.makeText(NormalModeActivity1.this, "(Small)You were WRONG!", Toast.LENGTH_SHORT).show();
                }
            }
        });

        TextView score = (TextView) findViewById(R.id.ScoreDisplay);
        String ScoreShow;
        ScoreShow = String.valueOf(Score);
        score.setText("Your Score Is: " + ScoreShow);
        counter++;

        if (counter > 5)
        {
            score.setText("ItsOver!!!");
        }
    }
}

}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:app="http://schemas.安卓.com/apk/res-auto"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:fitsSystemWindows="true"
tools:context="com.example.moshik.whatisbigger.NormalModeActivity1">

<include layout="@layout/content_normal_mode1" />

<TextView
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:textSize="30sp"
    安卓:id="@+id/ScoreDisplay"
    安卓:layout_alignParentTop="true"
    安卓:layout_centerHorizontal="true"
    安卓:layout_marginTop="60dp">
</TextView>

<TextView
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:id="@+id/XNumber"
    安卓:layout_centerVertical="true"
    安卓:layout_toLeftOf="@+id/ScoreDisplay"
    安卓:layout_toStartOf="@+id/ScoreDisplay"
    安卓:textSize="20sp">


</TextView>

<TextView
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:id="@+id/YNumber"
    安卓:layout_alignTop="@+id/XNumber"
    安卓:layout_toRightOf="@+id/ScoreDisplay"
    安卓:layout_toEndOf="@+id/ScoreDisplay"
    安卓:textSize="20sp">

</TextView>

<Button
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:id="@+id/Bigger"
    安卓:layout_marginTop="121dp"
    安卓:hint="@string/BIG"
    安卓:layout_below="@+id/XNumber"
    安卓:layout_alignParentLeft="true"
    安卓:layout_alignParentStart="true">

</Button>

<Button
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:id="@+id/Equal"
    安卓:layout_alignTop="@+id/Bigger"
    安卓:layout_centerHorizontal="true"
    安卓:hint="@string/EQUAL">

</Button>

<Button
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:id="@+id/Smaller"
    安卓:hint="@string/SMALL"
    安卓:layout_alignTop="@+id/Equal"
    安卓:layout_alignParentRight="true"
    安卓:layout_alignParentEnd="true">

</Button>

以下是布局和活动本身。 你能找到这里的问题或我错过了什么吗?,非常感谢:)


共 (1) 个答案

  1. # 1 楼答案

    你永远不会更新你的分数。首先将其更改为类字段,以便在回调中更容易访问

    private TextView score;
    

    然后在onCreate方法中:

    score = (TextView) findViewById(R.id.ScoreDisplay);
    

    然后在增加分数后更新每个回调click listener中的文本:

    Score++;
    score.setText("Your Score Is: " + Score);
    

    另外,我会更新变量名,使其更加不同,因为使用Score表示int,使用score表示TextView会让人困惑

    显示类字段的更新:

    public class NormalModeActivity1 extends AppCompatActivity {
    
        int Score = 0;
        boolean AnswerBig = false;
        boolean AnswerEqual = false;
        boolean AnswerSmall = false;
        int counter = 0;
        TextView X;
        TextView Y;
        TextView score;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_normal_mode1);
    
            // set class fields
            X = (TextView) findViewById(R.id.XNumber);
            Y = (TextView) findViewById(R.id.YNumber);
            score = (TextView) findViewById(R.id.ScoreDisplay);
    
            Random rnd = new Random();
            int Number1 = rnd.nextInt(99) + 1;
            String Xstring = String.valueOf(Number1);
            X.setText(Xstring);
    
            int Number2 = rnd.nextInt(99) + 1;
            String Ystring = String.valueOf(Number2);
            Y.setText(Ystring);
    
            if (Number1 > Number2) {
                AnswerBig = true;
            }
            if (Number1 == Number2) {
                AnswerEqual = true;
            }
            if (Number1 < Number2) {
                AnswerSmall = true;
            }
    
            findViewById(R.id.Bigger).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (AnswerBig) {
                        Toast.makeText(NormalModeActivity1.this, "(BIG)You are RIGHT!", Toast.LENGTH_SHORT).show();
                        Score++;
                        score.setText("Your Score Is: " + Score);
                        AnswerBig = false;
                    } else {
                        Toast.makeText(NormalModeActivity1.this, "(BIG)You were WRONG!", Toast.LENGTH_SHORT).show();
                    }
                    incrementAndCheckCounter();
                }
            });
    
            findViewById(R.id.Equal).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (AnswerEqual) {
                        Toast.makeText(NormalModeActivity1.this, "(Equal)You were RIGHT!", Toast.LENGTH_SHORT).show();
                        Score++;
                        score.setText("Your Score Is: " + Score);
                        AnswerEqual = false;
                    } else {
                        Toast.makeText(NormalModeActivity1.this, "(Equal)You were WRONG!", Toast.LENGTH_SHORT).show();
                    }
    
                    incrementAndCheckCounter();
                }
            });
    
            findViewById(R.id.Smaller).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (AnswerSmall)
                    {
    
                        Toast.makeText(NormalModeActivity1.this, "(Small)You were RIGHT!", Toast.LENGTH_SHORT).show();
                        Score++;
                        score.setText("Your Score Is: " + Score);
                        AnswerSmall = false;
    
                    } else {
                        Toast.makeText(NormalModeActivity1.this, "(Small)You were WRONG!", Toast.LENGTH_SHORT).show();
                    }
                    incrementAndCheckCounter();
                }
            });
    
            String ScoreShow;
            ScoreShow = String.valueOf(Score);
            score.setText("Your Score Is: " + ScoreShow);
        }
    
        private void incrementAndCheckCounter() {
            counter++;
            if (counter > 5)
            {
                score.setText("ItsOver!!!");
            }
        }
    }