Функция Android Toast Maketext попала не в тот лупер - PullRequest
1 голос
/ 28 октября 2019

Мое приложение работает не правильно. Когда я нажимаю одну кнопку, я автоматически выхожу из системы. Здесь есть исходный код.

protected void previewStack() {
        this.currentSubeditor.dataFromUIFields();

        Toast.makeText(getApplicationContext(), "Generating preview..", Toast.LENGTH_SHORT).show();
        updatePostButtonState();
        Hype4DController controller = Hype4DController.getInstance();
        controller.previewStack(getApplicationContext(), this, this.stack);
    }

Итак, я отладил Toast.maketext (), затем он показывает,

    public Looper getMainLooper() {
        return mBase.getMainLooper();
    }

И предупреждаю, что этот цикл не корректный. Я думаю, что это из-за функции Toast maketext (). Потому что другие функции работают правильно. Так что кто-нибудь, пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Toast.makeText() должен вызываться только из основного потока / потока пользовательского интерфейса:

 protected void previewStack() {
 this.currentSubeditor.dataFromUIFields();


 runOnUiThread(new Runnable() {
              public void run() {
                 Toast.makeText(getApplicationContext(), "Generatingpreview..",Toast.LENGTH_SHORT).show();
              }
         });

  updatePostButtonState();
  Hype4DController controller = Hype4DController.getInstance();
  controller.previewStack(getApplicationContext(), this, this.stack);


        }
0 голосов
/ 28 октября 2019

Кажется, что вы запускаете его в другом потоке, вы должны выполнить Toast в основном потоке, вы можете попробовать это:

 activity.runOnUiThread(new Runnable() {
        public void run() {
           Toast.makeText(getApplicationContext(), "Generating preview..", Toast.LENGTH_SHORT).show();
        }
 });
...