- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望我的文本对象在 startGame() 函数中完成 for 循环后在 TextView 中显示字符串,但它一进入 startGame() 函数就显示 TextView。我不知道这可能是执行顺序错误还是什么,但是有人可以帮助我吗?
这是我的代码:` 导入 android.graphics.Color; 导入 android.os.Bundle; 导入 android.support.v7.app.AppCompatActivity; 导入 android.view.View; 导入 android.widget.Button; 导入 android.widget.TextView; 导入 java.util.Random; 导入 java.util.Timer; 导入 java.util.TimerTask;
public class EasyGameActivity extends AppCompatActivity
{
private int counter;
private TextView text;
private boolean flag = false;
private Button button = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_easy_game);
startGame();
}
public void startGame()
{
counter = 3;
int temp;
int i;
int level = 1;
long nanoSec = 0;
final Random rand = new Random();
Timer timer = new Timer();
while(true)
{
BinaryTree binaryTree = new BinaryTree(counter);
nanoSec = 2000;
for(i = 0; i<counter; ++i)
{
temp = rand.nextInt(4);
switch(temp)
{
case 0:
button = (Button) findViewById(R.id.button5); break;
case 1:
button = (Button) findViewById(R.id.button6); break;
case 2:
button = (Button) findViewById(R.id.button7); break;
case 3:
button = (Button) findViewById(R.id.button8); break;
}
timer.schedule(new MyTask(button, temp), nanoSec);
timer.schedule(new MyTask(button, -1), nanoSec + 500);
nanoSec += 2000;
binaryTree.insert(temp);
}
text = (TextView) findViewById(R.id.levelText);
text.setText("Level: " + level);
break;
}
}
class MyTask extends TimerTask
{
private Button buttonId;
private int buttonNumb;
public MyTask(Button buttonId, int temp)
{
super();
this.buttonId = buttonId;
buttonNumb = temp;
}
@Override
public void run()
{
runOnUiThread(new Runnable() {
@Override
public void run()
{
if(buttonNumb == -1)
{
buttonId.setBackgroundColor(Color.BLACK);
}
else if(buttonNumb == 0)
{
buttonId.setBackgroundColor(Color.YELLOW);
}
else if(buttonNumb == 1)
{
buttonId.setBackgroundColor(Color.BLUE);
}
else if(buttonNumb == 2)
{
buttonId.setBackgroundColor(Color.RED);
}
else if(buttonNumb == 3)
{
buttonId.setBackgroundColor(Color.GREEN);
}
}
});
}
}
}
`
这是我的 xml 文件:`
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<TextView
android:id="@+id/levelText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="50dp"
android:textColor="#FFFFFF"
android:text = "" />
<TextView
android:id="@+id/countDnText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textSize="100dp"
android:textStyle="bold"
android:textColor="#FFFFFF"
android:text=""
/>
<Button
android:layout_width="160dp"
android:layout_height="200dp"
android:background="#000000"
android:id="@+id/button5"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="79dp" />
<Button
android:layout_width="160dp"
android:layout_height="200dp"
android:background="#000000"
android:id="@+id/button6"
android:layout_alignTop="@+id/button5"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="160dp"
android:layout_height="200dp"
android:background="#000000"
android:id="@+id/button7"
android:layout_below="@+id/button5"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp" />
<Button
android:layout_width="160dp"
android:layout_height="200dp"
android:background="#000000"
android:id="@+id/button8"
android:layout_alignTop="@+id/button7"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
`
最佳答案
您的代码不会在设置 TextView 的文本之前等待计时器完成,因此它的工作方式如下(任意 ms 值来说明我的观点):
您可以简单地将编辑文本设置为在计时器上发生,就像您有每个任务 (@nanoSecond) 一样,它将在其他任务之后排队。这样的东西应该可以工作(替换您当前的 TextView 代码)。
final TextView textView = (TextView) findViewById(R.id.levelText);
Handler handler = new Handler();
handler.postDelayed(new Runnable{
@Override
public void run(){
textView.setText("Level: " + level);
}
}, nanoSec);
关于android - TextView一直显示文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34364209/
我有一个在 Android 市场上相当流行的应用程序,它允许数以万计的用户按下一个按钮并向它发出语音命令。然后我就可以做很多不同的事情,比如给他们提供当前的天气预报等等...... 无论如何,我的应用
令人惊讶的是,标题基本上解释了它。我们有一个我们的客户制作的页面,我们正在重新创建该页面。 页面高度会一直增加,直到(我假设是这样)浏览器达到它的极限。我已经尝试过 Firebug 和 W3 验证器,
我是 react-native 的新手,试图创建我自己的组件,但它一直显示一个空屏幕。 这是我的组件代码 class BoxComponent extends Component { cons
我正在为我的 PHP 元素创建一个非常简单的博客,但遇到了一个简单的问题。我无法让我的页眉图像一直 float 。我有一个横幅,左边有一些文字,我有一个 1px 的切片,在可以选择的任何分辨率的宽度上
为什么我可以在另一个 Controller 的 View 中访问一个 Controller 的辅助方法?有没有办法在不破解/修补 Rails 的情况下禁用它? 最佳答案 @George Schreib
我正在使用带有最新 ADT 插件的 Eclipse Kepler SP2。每隔一分钟 Eclipse 就会说“为 Android 4.4.2 加载数据”并阻止我想做的一切。我在不同的文件夹中有几个 E
我是一名优秀的程序员,十分优秀!