【发布时间】:2021-08-31 06:04:29
【问题描述】:
我正在开发一款模拟板球比赛的应用。我的逻辑是正确的,但由于未反映更改,程序不断给出错误的输出。我使缓存无效并重新启动了 android studio。但是,不反映变化的故障仍在继续。这些变化与布尔变量特别相关。两天后突然我运行了该应用程序,它的行为符合预期。 我很困惑 Gradle 构建系统是否有任何故障?所有这些混乱都占用了我很多时间。我正在考虑切换到其他一些android IDE。哪个更好并且不使用 Gradle?因为我对 Android Studio 和 Gradle 感到沮丧。我并不是要散布对 Android Studio 和 Gradle 的仇恨,但我对性能和不一致感到非常沮丧。
编辑: 我有一个名为 Team 的类,它有两个 bool 变量,指示一个团队是 batting 还是 bowling。
代码如下:
public class Team {
private int numberOfRunsScored, numberOfWicketsTaken;
private int numberOfBallsThrown, numberOfOversCompleted;
private String inningTypeString;
private boolean batting,balling;
public boolean isBatting() {
return batting;
}
public void setBatting(boolean batting) {
this.batting = batting;
}
public boolean isBalling() {
return balling;
}
public void setBalling(boolean balling) {
this.balling = balling;
}
在 MainActivity 中模拟游戏,我制作了 class Team 的两个对象分别为 "a" 和 "b"。 比赛开始时,随机结果决定哪支球队先击球,哪支球队打拳。 因此,对于第一局,我将行为设置如下:
`public void performToss() {
tossCallByTeamA = a.tossCall();
tossOutput.setTossOutcome(tossOutput.doToss());
boolean tossOutCome = tossOutput.getTossOutcome();
if (tossOutCome == tossCallByTeamA) {
a.setInningType(Team.InningType.BATTING);
b.setInningType(Team.InningType.BOWLING);
a.setBatting(true);
b.setBalling(true);
} else {
a.setInningType(Team.InningType.BOWLING);
b.setInningType(Team.InningType.BATTING);
a.setBalling(true);
b.setBatting(true);
}
}`
在第一局之后,球队之间的击球和保龄球切换。所以我写了下面的代码来切换角色。
public void switchViewStubs() {
//stub1.setVisibility(View.GONE);
//stub2.setVisibility(View.GONE);
alloversCompleted = true;
createViewStubs();
if (a.getInningType().equalsIgnoreCase("batting")) {
newStub1.setLayoutResource(R.layout.bowling_team_layout);
newStub2.setLayoutResource(R.layout.batting_team_layout);
a.setBatting(false);
b.setBatting(true);
}
if (a.getInningType().equalsIgnoreCase("bowling")) {
newStub1.setLayoutResource(R.layout.batting_team_layout);
newStub2.setLayoutResource(R.layout.bowling_team_layout);
b.setBatting(false);
a.setBatting(true);
}
newStub1.inflate();
newStub2.inflate();
instantiateViewsAndSettingListenersToButtons();
aRuns = 0;
bRuns = 0;
}
设置文本以运行 TextView 的代码是造成麻烦并占用我宝贵的 2-3 小时的代码,尽管我在编写逻辑时是无辜且正确的。这是代码。
if (view.equals(oneRun)) {
//incrementBalls();
totalRuns++;
if (a.isBatting()) {
//new AlertDialog.Builder(this).setTitle("batting staus").setMessage("a is batting").show();
aRuns++;
//a.setNumberOfRunsScored(aRuns);
if (!alloversCompleted) {
incrementBalls();
updateRuns(aRuns);
}
if (alloversCompleted) {
updateRuns(0);
alloversCompleted = false;
}
if ((totalRuns > targetRuns) && (secondInning)) {
setTextOnFooter("Team A wins");
}
}
if (b.isBatting()) {
//new AlertDialog.Builder(this).setTitle("batting staus").setMessage("b is batting").show();
bRuns++;
//b.setNumberOfRunsScored(bRuns);
if (!alloversCompleted) {
incrementBalls();
updateRuns(bRuns);
}
if (alloversCompleted) {
updateRuns(0);
alloversCompleted = false;
}
if ((totalRuns > targetRuns) && (secondInning)) {
setTextOnFooter("Team B wins");
}
}
}
上述代码中(b.isBatting)的代码块即使切换了击球角色也根本没有执行。但是我已经编写了正确的代码和逻辑,将击球角色更改为保龄球,将保龄球角色更改为击球。 我使现金无效并重新启动了android studio,但代码行为不正确。 我听说 Gradle 构建系统很快,因为它只考虑和构建更改的代码,而不是一次又一次地构建所有代码。 我怀疑 Gradle 中的一些故障没有考虑到我对布尔变量所做的更改。两天后,我重建代码并再次运行它,它运行得非常好。 这种行为不一致且有问题。 任何人都可以预测一定出了什么问题吗? Gradle 版本是 gradle:4.2.2
【问题讨论】:
标签: java android android-studio gradle