gpt4 book ai didi

java - 仅一次迭代后应用程序就会崩溃。如果没有可运行程序,它根本无法运行。现在它在第一次迭代后崩溃了

转载 作者:行者123 更新时间:2023-12-01 09:39:47 24 4
gpt4 key购买 nike

 package com.example.chirag.example;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.Random;


public class MainActivity extends AppCompatActivity {
TextView TV;
Button upbutton;
Button downbutton;
TextView score;
String n1;
int bool=0;
int a;
int b;
int sc=0;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView TV = (TextView)findViewById(R.id.TV);
TextView score = (TextView)findViewById(R.id.score);
Button upbutton = (Button) findViewById(R.id.upbutton);
Button downbutton = (Button) findViewById(R.id.downbutton);
Button start = (Button) findViewById(R.id.start);
n1 = generate();
TV.setText(n1);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
start();
}
});
}
String generate()
{
TextView TV = (TextView)findViewById(R.id.TV);
int n = new Random().nextInt(20);
String s = String.valueOf(n);
return s;
}
void start() {
Runnable myRunnable = new Runnable() {
@Override
public void run()
{while (bool == 0) {
final TextView TV = (TextView) findViewById(R.id.TV);
final TextView score = (TextView) findViewById(R.id.score);
Button upbutton = (Button) findViewById(R.id.upbutton);
Button downbutton = (Button) findViewById(R.id.downbutton);
Button start = (Button) findViewById(R.id.start);
String n2 = generate();
TV.setText(n2);

a = Integer.valueOf(n1.toString());
b = Integer.valueOf(n2.toString());
if (a > b) {
downbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String n3 = generate();
TV.setText(n3);
a = b;
b = Integer.valueOf(n3.toString());
score.setText("Score" + (sc + 1));
}
});
upbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TV.setText("Game Over");
bool = 1;
}
});
} else {
upbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String n3 = generate();
TV.setText(n3);
a = b;
b = Integer.valueOf(n3.toString());
score.setText("Score" + (sc + 1));
}
});
downbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TV.setText("Game Over");
bool = 1;
}
});
}
}

}
};


Thread myThread = new Thread(myRunnable);
myThread.start();

}

}

我已将代码放入可运行文件中。逻辑看似正确,但行不通。生成方法创建一个新数字并将其显示在“TV”中。单击开始时,会生成一个新数字,并将第二个数字与第一个数字进行比较。如果按下正确的按钮(向上或向下),分数就会增加并继续该过程。如果点击了错误的按钮,“游戏结束”

最佳答案

您无法从另一个线程触摸 UI。 Android 中的所有 UI 任务都应该在主线程(也称为 UI 线程)中执行。此行(例如)尝试从非主线程的 run() 命令内部影响 ui:

 TV.setText(n2);

有关如何与 UI 线程通信的信息,请参阅 this tutorial

关于java - 仅一次迭代后应用程序就会崩溃。如果没有可运行程序,它根本无法运行。现在它在第一次迭代后崩溃了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com