как сделать закусочную доступной для любого вида деятельности в Android?

#java #android-snackbar

Вопрос:

я объявил ниже закусочную в основных активностях и попытался позвонить из другого класса 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();  }  }  

Ответ №1:

Вы никогда не называете новое каким-либо видом деятельности. Это не приведет к его правильной инициализации. Единственный способ правильно инициализировать действие-это сделать это с помощью фреймворка, что происходит, когда startActivity вызывается с надлежащим намерением.

Вы бы не сделали закусочную из действия on доступной в любом другом действии. Потому что эта закусочная видна только тогда, когда Действие находится на переднем плане. Эти другие виды деятельности должны быть своими, если они хотят их показать.

Если вы хотите, чтобы другой класс изменил панель закусок действия, вы передаете эту панель закусок в качестве параметра этому классу либо в конструкторе, либо в вызываемом методе. Пожалуйста, обратите внимание, что даже если вы сохраните закусочную из основного действия в каком-либо другом классе и получите к ней доступ позже, изменение чего-либо в ней не повлияет на закусочные в других действиях. Пожалуйста, также не забывайте, что вы НИКОГДА не должны сохранять представление в статической переменной или пытаться сохранить его дольше, чем действие, частью которого оно является, так как это приведет к массовой утечке памяти.