Тост на Android 8 Oreo - PullRequest
       6

Тост на Android 8 Oreo

0 голосов
/ 14 сентября 2018

Я хочу показать тост 4 раза (8 секунд). (Toast.LENGTH_SHORT = 2 секунды и 2 * 4 = 8 секунд) Но на Android 8 oreo он показывает только 2 секунды. Нет проблем на 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();
                }   
    }

});

    }

1 Ответ

0 голосов
/ 15 сентября 2018

Я решил и отлично работает на 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);


        }

    });

}

...