【问题标题】:how to make a snackbar accessible from any activity in android?如何使小吃店可以从 android 中的任何活动中访问?
【发布时间】:2021-12-15 20:42:46
【问题描述】:

我已在主要活动中的小吃栏下方声明并尝试从另一个 java 类调用。但它使我的应用程序因以下错误而崩溃。我怎样才能让一个可以从任何活动或任何非活动 Java 类访问的小吃店。

我正在调用在另一个 java 简单类的活动中声明的小吃店,如下所示

MainActivity main=new MainActivity();
showSnackbar("EASY BOSE WE ARE ONLINE ");

但它返回此错误并导致我的应用程序崩溃

java.lang.NullPointerException:尝试调用虚拟方法 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' 在一个空对象上 参考

public void showSnackbar(String message){
     View rootView = findViewById(android.R.id.content);
     if(rootView != null) {
         Snackbar.make(rootView, message, Snackbar.LENGTH_LONG).show();
     }
 }

【问题讨论】:

    标签: java android-snackbar


    【解决方案1】:

    您永远不会在任何 Activity 上调用 new。那将无法正确初始化它。正确初始化 Activity 的唯一方法是让框架执行它,这发生在使用正确的 Intent 调用 startActivity 时。

    您不会在任何其他 Activity 中访问 Activity 中的 Snackbar。因为 Snackbar 仅在 Activity 位于前台时可见。如果他们想展示一个,其他活动应该自己制作。

    如果您希望另一个类更改 Activity 的 Snackbar,则将该 Snackbar 作为参数传递给该类,无论是在构造函数中还是在您调用的方法中。请注意,即使您确实从其他课程的主要活动中保存了一个小吃店并稍后访问它,更改其中的任何内容都不会影响其他活动中的小吃店。也请不要将视图保存在静态变量中或尝试使其持续时间超过其一部分的 Activity,因为这样做会导致大量内存泄漏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 2020-05-11
      • 2018-05-13
      • 2020-08-23
      相关资源
      最近更新 更多