设置TextView文本无法正常工作

时间:2013-09-03 15:01:54

标签: java android textview

当我在TextView中设置文字时,其文字在转到correctCondition()方法后会发生变化;但我想在转到correctCondition()之前更改文字。 所以当我点击按钮时,TextView会发生变化,然后运行进一步的操作。

我想播放声音“一”并同时显示文字“1”

这里我在

中添加了一些代码
image1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (mClicked == false) {
                mClicked = true;
                count = count + 1;
                numberWrite.setText("" + count);
                one();
                correctCondition();

            }  
        }
    });




private void one() {

        Thread tr = new Thread(new Runnable() {

            @Override
            public void run() {

        AssetFileDescriptor one;
        try {
            one = mActivity.getAssets().openFd(
                    "counting/one.mp3");

        MediaPlayer counting = new MediaPlayer();


            counting.setDataSource(one.getFileDescriptor(),
                    one.getStartOffset(), one.getLength());
            one.close();
            counting.prepare();
            counting.setVolume(1f, 1f);
            counting.start();

            counting.setOnCompletionListener(new OnCompletionListener() {
                public void onCompletion(MediaPlayer mp) {
                    mp.release();
                }
            });





        } catch (IOException e1) {

            e1.printStackTrace();
        }
        }
    });

        tr.start();
}

public void playCorrectBeep() {
    Thread t = new Thread(new Runnable() {

        @Override
        public void run() {
            MediaPlayer correctMp = new MediaPlayer();

            try {
                AssetFileDescriptor correct = mContext.getAssets().openFd(
                        "correct.mp3");
                correctMp.setDataSource(correct.getFileDescriptor(),
                correct.getStartOffset(),correct.getLength());

                correct.close();
                correctMp.prepare();
                correctMp.start();
                correctMp.setOnCompletionListener(new OnCompletionListener() {
                public void onCompletion(MediaPlayer mp) {
                                mp.release();
                            }
                        });
            } catch (IllegalArgumentException e) {

                e.printStackTrace();
            } catch (IllegalStateException e) {

                e.printStackTrace();
            } catch (IOException e) {

                e.printStackTrace();
            }

        }
    });

    t.start();

}

提前致谢

1 个答案:

答案 0 :(得分:1)

您的交换机需要“中断”,请执行以下操作:

switch (v.getId()) {
    case R.id.imageView1:

        if (mClicked == false) {
            mClicked = true;
            count = count + 1;                    
            numberWrite.setText(""+ count);  
            toast.cancel();

            soundManager.one();
            correctCondition();
        }

     break; // add this line
 }

此外,你不应该让你的correctCondition()方法在UI-Thread上运行。而是让你的SoundManager.one();在一个单独的线程中运行。

public void one() {

    Thread t = new Thread(new Runnable) {

        public void run() {

          counting = new MediaPlayer();
          try {

            counting.setDataSource(one.getFileDescriptor(), one.getStartOffset(), one.getLength());
            one.close();
            counting.prepare();
            counting.setVolume(1f, 1f);
            counting.start();

            counting.setOnCompletionListener(new OnCompletionListener() {
                   public void onCompletion(MediaPlayer mp) {
                        mp.release();
                   }
            });

         } catch (IOException e) {
               e.printStackTrace();
         }
       }
     };
     t.start();
}