Toast.makeText 未在 Android 11 中显示使用 SDK 30 模拟器

问题描述

根据 https://developer.android.com/about/versions/11/behavior-changes-11#toasts 的说法,Toasts 在 Android11 上应该仍然可以正常工作(只有 setView() 被弃用)。

请注意,仍然允许文本吐司;这些是使用不调用 setView() 的 Toast.makeText() 创建的吐司。

但是,我无法为运行 SDK30 的模拟器显示 Toast

    compileSdkVersion 30
    buildToolsversion "30.0.3" 
    and with targetSdkVersion 30 
    

使用的代码很简单

    Toast.makeText(getApplicationContext(),"HELLO WORLD",Toast.LENGTH_SHORT).show();

当我将 targetSdk 更改为 29(或使用设备

我需要在清单文件中为 Toast 添加任何 标签吗? https://developer.android.com/about/versions/11/privacy/package-visibility

我也尝试了以下方法但没有成功。

  1. 重新启动模拟器 Toast not showing in Android Q
  2. 通知Toast message not shown

解决方法

第一种方法

Android Emulator 更新到 30.4.5 版本为我修复了错误。附注我还将 Android SDK Platform-Tools 更新为 31.0.0 版本(这也可能有帮助)。

菜单Tools -> SDK Manager -> SDK Tools,将Android Emulator的复选框设置为V-模式,按下按钮Apply,按下按钮 OK,确认。

附言同样在更新这些之后,Android Studio 和模拟器被关闭,并且在新编译之前清理了项目。

第二种方法

如果您在使用最新版本的 Android Emulator 时遇到此错误,还有另一种解决方案。你可以试试模拟器的冷启动。菜单 Tools -> AVD Manager。找到您的模拟器名称,点击右侧的按钮 ▼,选择 Cold boot now 按钮。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...