Java 我的测验应用程序没有给出正确的结果,进入最终结果

Java 我的测验应用程序没有给出正确的结果,进入最终结果,java,android,textview,android-edittext,system-clock,Java,Android,Textview,Android Edittext,System Clock,我正在创建一个测验应用程序,它将泰卢古语与英语进行匹配,我的目标是让这十个问题在6秒钟内显示每个问题的答案,然后继续下一个问题。但我的应用程序等待了整整60秒,只在整个屏幕上显示->一个 代码: XML: 你只是在一次又一次地循环阅读同一个文本字段。当代码执行时,该文本字段永远不会更改。问题是,UIThread在quick方法中是冻结的,并且永远不会更改用户的视图 在不同的线程中调用测验方法。比如说 @Override protected void onCreate(Bundle savedIn

我正在创建一个测验应用程序,它将泰卢古语与英语进行匹配,我的目标是让这十个问题在6秒钟内显示每个问题的答案,然后继续下一个问题。但我的应用程序等待了整整60秒,只在整个屏幕上显示->一个

代码:

XML:


你只是在一次又一次地循环阅读同一个文本字段。当代码执行时,该文本字段永远不会更改。

问题是,UIThread在quick方法中是冻结的,并且永远不会更改用户的视图

在不同的线程中调用测验方法。比如说

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_letter_quiz);
    font = Typeface.createFromAsset(getAssets(),
    "fonts/NotoSansTelugu-Bold.ttf");

    top = (TextView) findViewById(R.id.telugu);
    eval = (TextView) findViewById(R.id.eval);
    answer = (EditText) findViewById(R.id.answer);
    finalResult=(TextView)findViewById(R.id.finale);
    finalResult.setVisibility(View.GONE);

    Thread t=new Thread(){
       @Override
       public void run() {
         quiz();
       } 
    }

    t.start();
}
runOnUiThread(new Runnable(){
public void run() {
       top.setTypeface(font);
        top.setTextSize(40.f);
        top.setText(telugu[number]);
    }
在quick方法中,对每个改变视图的语句调用runOnUiThread。比如说

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_letter_quiz);
    font = Typeface.createFromAsset(getAssets(),
    "fonts/NotoSansTelugu-Bold.ttf");

    top = (TextView) findViewById(R.id.telugu);
    eval = (TextView) findViewById(R.id.eval);
    answer = (EditText) findViewById(R.id.answer);
    finalResult=(TextView)findViewById(R.id.finale);
    finalResult.setVisibility(View.GONE);

    Thread t=new Thread(){
       @Override
       public void run() {
         quiz();
       } 
    }

    t.start();
}
runOnUiThread(new Runnable(){
public void run() {
       top.setTypeface(font);
        top.setTextSize(40.f);
        top.setText(telugu[number]);
    }

})

听起来你应该调试你的程序。单步浏览,或者只是打印一些东西。不要通过调用SystemClock.sleep6000冻结你的用户界面;除了由于SystemClock.sleep导致的UI冻结之外,还可以看看AsyncTask;,您的答案检查逻辑有一些问题。你为什么要把i和随机生成的数字进行比较?这并不能告诉你他们的回答是否正确。你能具体解释一下吗?我是说随机数是生成的,对吗?是的。我的意思是,您在UI线程的循环中反复检查相同的文本字段。用户永远没有机会响应,甚至看不到您的UI更新。