java - 每秒更新一个 TextView 以从数组中显示

标签 java android arrays

我正在尝试构建一个短内存游戏,我想要显示一个单词列表。

在 Activity 开始时,第一个单词,然后每秒显示下一个单词,最后一个单词显示后, Activity 会在没有用户过程的情况下发生变化。我已经尝试过一些事情,但我最接近的只是显示的最后一个词。有什么想法吗?

Java 文件:

 package com.example.pc.myapplication;

 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.TextView;

 import java.util.Random;


 public class Game1Round1 extends Activity {


    String[] round1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.game1round1);

        round1 =   getResources().getStringArray(R.array.round1);

        Thread t = new Thread() {

            @Override
            public void run() {
                try {
                    while (!isInterrupted()) {
                        Thread.sleep(1000);
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                updateTextView();
                            }
                        });
                    }
                } catch (InterruptedException e) {
                }
            }
        };

        t.start();


    Proceed();
    }


    private void updateTextView() {
        int i= 0;
        while ( i <13) {
            TextView textView = (TextView) findViewById(R.id.randomTextView);



            textView.setText(round1[i]);
           i = i + 1;
        }
    }
public void Proceed() {
    Intent intent1 = new Intent(this, Game1Start.class);
    startActivity(intent1);
}
}

还有我的 strings.xml:

   <resources>
<string name="app_name">My Application</string>
<string-array name="round1">
    <item>Cinnamon</item>
    <item>Apple</item>
    <item>Milk</item>
    <item>Detergent</item>
    <item>Cheese</item>
    <item>Shampoo</item>
    <item>Butter</item>
    <item>Tangerine</item>
    <item>Coffee</item>
    <item>Marmalade</item>
    <item>Cabbage</item>
    <item>Meat</item>
    <item>Sugar</item>
</string-array>

最佳答案

删除 updateTextView() 方法并像这样更改您的Thread

Thread t = new Thread() {

    @Override
    public void run() {
        try {
            while (!isInterrupted() && i < 12) {
                Thread.sleep(1000);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        ((TextView)findViewById(R.id.randomTextView)).setText(round1[i]);
                        i++;
                    }
                });
            }
            Proceed();
        } catch (InterruptedException e) {
        }
    }
};

t.start();

关于java - 每秒更新一个 TextView 以从数组中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34181941/

相关文章:

c - C 中的 array_length

c - 如何在C中对数字数组进行排序

javascript - 如何在 javascript 中对组合 2 个数组进行排序(如 c# (Array.sort() ))

java - 如何在 Java 中针对 AD 对用户进行身份验证

java - JTextField 中显示异常

android - Kotlin:如何将具有不同参数的函数作为参数传递给其他函数

android - 如何在 Android "L"上获取最近的任务?

android - 如何在android studio中设置和获取性别单选按钮的值?

java - Hibernate 实体 - 向实体添加业务逻辑?

java - JTabbedPane 内 JPanel 内的 JPanel 不显示