Отображение сообщения 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();
Другие вопросы по тегам