我如何延迟文本从被显示在textView -使用输入从用户



我试图做一个简单的应用程序,每隔这么多秒被显示的文本被更改为另一个,输入是由用户在onClick之前给出的,并设置为不同的字符串。我找不到一种方法,有不同的字符串显示在不同的时间-甚至有可能使用一个单一的textView显示不同的文本在不同的时间,从来没有在同一时间....

任何帮助都是感激的。谢谢。

安德鲁

这是我到目前为止的代码…

public class ThunderActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  //when the game button is pressed
    final Button button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //Enter names
            //player one
            final EditText player1 = (EditText) findViewById(R.id.editText1);
            final String player = player1.getText().toString().trim();
            //player 2
            final EditText player2 = (EditText) findViewById(R.id.editText2);
            final String player11 = player2.getText().toString().trim();
            //player 3
            final EditText player3 = (EditText) findViewById(R.id.editText3);
            final String player111 = player3.getText().toString().trim();
            //switches to second screen - the play xml file
            setContentView(R.layout.main2);
            //starts the song
            MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.drawable.thunderstruck);
            mp.start();
            //shuffle names and display them
            //displays name - testing purposes
            v = (TextView) findViewById(R.id.textView1);
            String text = player;
            ((TextView) v).setText(text);
            //v = (TextView) findViewById(R.id.textView2);
            //String text2 = player11;
            //((TextView) v).setText(text2);    
        }           
    });           
}   

}

更简单的方法是使用Handler.postDelayed方法。

public class Act extends Activity{
    private Handler handler = new Handler();
    private TextView view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Initialize view
        handler.postDelayed(new ViewUpdater("str1", view), 10000);
        handler.postDelayed(new ViewUpdater("str2", view), 20000);
        handler.postDelayed(new ViewUpdater("str2", view), 30000);
    }
    private class ViewUpdater implements Runnable{
        private String mString;
        private TextView mView;
        public ViewUpdater(String string, TextView view){
            mString = string;
            mView = view;
        }
        @Override
        public void run() {
            mView.setText(mString);
        }
    }
}

像这样:你得到了基本的想法!

好的,这是你的提示:

假设您的TextView称为yourTextView

String[] texts = new String[]{"String1","String2","String3"}; //etc
Runnable myRun = new Runnable(){
    public void run(){
        for(int i=0;i<texts.length;i++){
            synchronized(this){
                wait(30000); //wait 30 seconds before changing text
            }
            //to change the textView you must run code on UI Thread so:
            runOnUiThread(new Runnable(){
                public void run(){
                    yourTextView.setText(texts[i]);
                }
            });
        }
    }
};
Thread T = new Thread(myRun);
T.start();

更正确的答案是使用ViewFlipper。您可以将所有的TextViews添加到其中并调用startFlipping()

可以通过setFlipInterval(int milliseconds)设置翻转间隔。

最新更新