开发者

How do I delay text from being displayed in textView - using input from the user

开发者 https://www.devze.com 2023-03-25 04:40 出处:网络
I am trying to make a simple application where every so many seconds the text being displayed is changed to another, the input is given by the user before the onClick and set to different strings.I ca

I am trying to make a simple application where every so many seconds the text being displayed is changed to another, the input is given by the user before the onClick and set to different strings. I can't find a way to have the different strings displayed at different times - and is it even possible to use one single textView to display different text at different times, never at the same time....

Any help is appreciated. Thanks.

Andrew

This is my code so far...

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).setT开发者_运维知识库ext(text2);    
        }           
    });           
}   

}


An easier way to do the same thing is using the Handler.postDelayed method.

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);
        }
    }
}

Something like that: You get the basic idea!


ok here is your hint:

Say your TextView is called 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();


A more correct answer would be to use a ViewFlipper. You can add all your TextViews to it and call startFlipping(). You can set the flip interval by calling setFlipInterval(int milliseconds).

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号