我对安卓编程非常陌生,所以请原谅我的新手。我正在尝试创建一个非常简单的活动,其中在布局中间有一个 TextView,并且每隔几秒钟就将其切换到不同的文本。例如,TextView 将显示 "text1",暂停几秒钟,然后显示 "text2" 并再次暂停。最终,我想添加更多文本,并让它们依次循环。我知道这似乎是一件超级简单的事情,但我主要是想学习线程和处理程序。无论如何,我已经阅读了应该将冗长的事物从 UI 线程中移开以防止错误的内容,因此我想使用处理程序来简单地在屏幕上切换 2 个文本。不幸的是,我无法让它正常工作。以下是一些代码:
public class MainActivity extends Activity {
String[] myarray = {"text1" , "text2"};
int arraylength = myarray.length;
int count;
Handler handler = new Handler();
TextView mytexts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mytexts = (TextView)findViewById(R.id.my_texts);
mytexts.setText(myarray[0]);
Thread t = new Thread( new Runnable(){
public void run() {
for (int count = 0; count < arraylength; count++){
handler.postDelayed(new Runnable(){
public void run() {
mytexts.setText(myarray[1]);
}
}, 7000);
}
}
});
t.start();
}
}
根据logcat,处理程序似乎连续运行postDelayed(在我的代码中,它不等待7秒钟就会执行另一个postDelayed)。此外,我想让“mytexts.setText(myarray [1]);”中的数字1与for循环中的“count”相同,以便它可以与数组中的字符串之一相同,但这给我带来了错误。我已经被卡住几个小时了,我在网上找到的其他示例对于像我这样主要想掌握基础知识的人来说似乎过于复杂。任何关于这些问题的帮助都将不胜感激。谢谢。
postDelayed
,改用带有while
的post
,然后再使用Thread.sleep(time)
? - Rotary Heart