我正在制作一个简单的应用程序,它可以间隔几秒钟播放 2 个快速 mp3 文件。我正在使用线程进行计时
在线程中,我对名为 myquick 的 xml 文件执行了 setText,它运行良好,但是在等待 10 秒后,当调用下一个 mp3 文件时,下一个 setText 不起作用并强制关闭。当我注释掉有问题的代码时......
// mytxt.setText("我们现在结束");
整个线程通过它的步伐,然后愉快地回到列表视图菜单。
问题......我怎样才能让文本在屏幕上改变?我怎样才能使这项工作?
这是我的 2 个相关文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/ses1text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_gravity="center"
android:gravity="center"
android:textColor="@android:color/white"
android:text=" "
android:textSize="25dp" >
</TextView>
</RelativeLayout>
这是我的 JAVA 代码,它有问题
public class MyQuick extends Activity {
MediaPlayer mp;
Thread threetimer;
@Override
public void onCreate(Bundle twothings) {
// TODO Auto-generated method stub
super.onCreate(twothings);
setContentView(R.layout.myquick);
threetimer = new Thread(){
public void run(){
try{
TextView mytxt = (TextView) findViewById(R.id.ses1text);
mp = MediaPlayer.create(MyQuick.this, R.raw.start);
mytxt.setText("Let's start in 10 seconds");
// it works here
mp.start();
sleep(5000);
mp.release();
sleep(10000);
// HERE IS THE PROBLEM
mp = MediaPlayer.create(MyQuick.this, R.raw.end);
mytxt.setText("We will now end");
//it doesn't work here,
//it closes this portion of the app and goes back to the listview
//needless to say the text does not change at all
mp.start();
sleep(5000);
mp.release();
}catch (InterruptedException e){
e.printStackTrace();
}finally{
Intent myIntent = new Intent("com.my.quick.MENU");
startActivity(myIntent);
}
}
};
threetimer.start();
}
}