Отображение сообщения Toast из класса Application
У меня есть несколько классов в моем приложении. Некоторые из них - занятия, услуги и классы по чистой Java. Я знаю, что могу отображать сообщение Toast из Activity, но я бы хотел отобразить Toast из чисто Java-класса.
В Java-классе я передаю контекст конструктору, но, похоже, он не показывает тост.
Я создал метод в классе Application, который принимает строку в качестве аргумента, надеясь, что смогу сгенерировать тост с использованием контекста приложения, и здесь тоже нет радости.
Как я могу сгенерировать тост из класса, который не является службой или деятельностью и т. Д.
public class LoginValidate{
public LoginValidate(Context context) {
this.context = context;
nfcscannerapplication = (NfcScannerApplication) context
.getApplicationContext();
}
public void someMethod(){
nfcscannerapplication.showToastMessage(result);
}
}
,
/// тогда в моем классе приложения
public void showToastMessage(String message){
Toast.makeText(this.getApplictionContext(), "Encountered a problem with sending tag: " + message, Toast.LENGTH_LONG).show();
}
7 ответов
Есть два способа сделать это, если у вас есть действительный контекст, вы можете сделать это как @CapDroid wrote:
public static void showToastWithTitle(String title) {
Toast.makeText(getApplicationContext(), title, Toast.LENGTH_LONG).show();
}
если вы этого не сделаете, вы также можете отправить контекст,
public static void showToastWithTitleAndContext(Context context, String title) {
Toast.makeText(context, title, Toast.LENGTH_LONG).show();
}
Обратите внимание, что вы можете определить статический контекст в вашем Application.java и использовать его для вызова shoh toast.
надеюсь, это поможет.
Сначала создайте класс Application следующим образом.
public class ApplicationContext extends Application {
/** Instance of the current application. */
private static ApplicationContext instance;
/**
* Constructor.
*/
public ApplicationContext() {
instance = this;
}
/**
* Gets the application context.
*
* @return the application context
*/
public static Context getContext() {
if (instance == null) {
instance = new ApplicationContext();
}
return instance;
}
/**
* display toast message
*
* @param data
*/
public static void showToast(String data) {
Toast.makeText(getContext(), data,
Toast.LENGTH_SHORT).show();
}
}
вызвать этот метод из любого вашего класса, как ApplicationContext.showToast("your string");
будьте осторожны с утечкой объекта контекста..
Напишите этот метод в вашем классе приложений. Вам просто нужно передать сообщение в параметре из любой деятельности.
public void showToast(String message)
{
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
Это работало для меня с:
Toast.makeText(this.getContext(), R.string.title, Toast.LENGTH_LONG).show();
Необходимо передать контекст showToastMessage(String message)
Как это showToastMessage(String message, Context context)
// тогда в моем классе приложения
public void showToastMessage(String message, Context context){
Toast.makeText(context, "Encountered a problem with sending tag: " + message, Toast.LENGTH_LONG).show();
}
Передайте сообщение из другого класса, используя параметр функции
public void showToast(строковое сообщение){
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
Toast.makeText(getActivity(), "Index....."+index, Toast.LENGTH_LONG).show();