繁体   English   中英

如何让小吃店可以从安卓中的任何活动中访问?

[英]how to make a snackbar accessible from any activity in android?

我已经在主要活动中的小吃店下方声明并尝试从另一个 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();
     }
 }

你永远不会在任何 Activity 上调用 new。 那不会正确初始化它。 正确初始化 Activity 的唯一方法是由框架来执行它,当使用正确的 Intent 调用 startActivity 时会发生这种情况。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM