0

我正在制作一个简单的应用程序,它可以间隔几秒钟播放 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();

        }
        }
4

0 回答 0