Как приостановить другие инструкции, пока диалоговое сообщение не будет закрыто - PullRequest
2 голосов
/ 29 августа 2011

Привет, у меня есть вопрос по AlertDialog / Toast. Когда пользователь нажимает кнопку, в течение 1 секунды должно отображаться сообщение «Вы правы». Когда я реализую это с помощью toast / alertstdialog, он выполняет это, но запускает следующую инструкцию в методе onclick, прежде чем dailog будет выключен. Как мне это исправить?

Ответы [ 3 ]

2 голосов
/ 06 октября 2012

Вот как я это сделал, используя объект Handler ---

открытый класс ToastActivity расширяет Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
    Handler mHandler = new Handler();
    for(int i=10;i>=1;i--)
    {
        Toast.makeText(this, ""+i, Toast.LENGTH_SHORT).show();
    }
    mHandler.postDelayed(new Runnable(){public void run(){
    LinearLayout t=(LinearLayout)findViewById(R.id.l);   //This task is delayed by 21 sec.
            t.setBackgroundColor(Color.CYAN);
        }
    }, 21000);           
}

}

Заявления после тоста выполняются после исчезновения тоста.

1 голос
/ 30 августа 2011

Если вы используете тост, отложите задачу на время отображения тоста, используя Обработчик .

При использовании диалогового окна, реализуйте onClickListener для кнопки «Окей».

0 голосов
/ 30 августа 2011

То, что я должен был сделать, это поместить любой код, который идет после AlertDialog, в соответствующий слушатель. Например, если после диалогового окна с предупреждением у вас есть набор кода, который вы хотите выполнить только на основе какого-либо ответа, переместите этот код в другой метод. Затем в вашем прослушивателе positiveButton (или прослушивателе с отрицательной кнопкой) добавьте вызов к соответствующему методу, который вы только что создали. Или вы можете просто вставить все это в слушателя, но это делает код менее управляемым.

...