1

I want to show toast 4 times (8 seconds). (Toast.LENGTH_SHORT=2 sec and 2*4=8 seconds) But it shows only 2 seconds on Android 8 oreo. No problem on Android 7.

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button work = (Button) findViewById(R.id.button1);
work.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
                for (int s = 0; s < 4; s++) {
            Toast.makeText(getApplicationContext(), "This is my Toast 
message!",
                       Toast.LENGTH_SHORT).show();
                }   
    }

});

    }
biyoalp
  • 33
  • 7
  • Possible duplicate of [Can an Android Toast be longer than Toast.LENGTH\_LONG?](https://stackoverflow.com/questions/2220560/can-an-android-toast-be-longer-than-toast-length-long) – Juan Sep 14 '18 at 18:22

1 Answers1

0

I solved and works perfectly on Oreo.

Handler handler = new Handler();
int s = 0;

public void stop() {
    handler.removeCallbacksAndMessages(null);
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Button work = (Button) findViewById(R.id.button1);
    work.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            handler.postDelayed(new Runnable() {
               @Override
               public void run() {
                   Toast.makeText(getApplicationContext(), "This is my Toast message!",
                           Toast.LENGTH_SHORT).show();  //LENGTH_SHORT is 2000 ms
                   handler.postDelayed(this, 2000);  //so I wait 2000 ms

                   s++;  //How many times you want
                   if ( s == 4) {  //2000x4=8000 ms
                       stop();  //stop the handler
                       s=0;  //do not forget 
                   }    
                }

            }, 0);


        }

    });

}

biyoalp
  • 33
  • 7