turtleboy
turtleboy

Reputation: 7574

Displaying a Toast message from the Application class

I have several classes in my application. Some are Activities, Services and Pure java classes. I know i can display a Toast message within an Activity, but I'd like to display a Toast from a pure java class.

In the java class I pass a context in to the constructor, but this doesn't seem to show the toast.

I have created a method in the Application class that takes a String as an argument, hoping I could generate a Toast using the Application context, no joy there either.

How can I generate a Toast from a class that isn't a Service or Activity?

public class LoginValidate {
    public LoginValidate(Context context) {
        this.context = context;
        nfcscannerapplication = (NfcScannerApplication) context
            .getApplicationContext();
    }
    public void someMethod() {
        nfcscannerapplication.showToastMessage(result);
    }
}

Then in my Application class:

public void showToastMessage(String message) {
    Toast.makeText(this.getApplictionContext(),
        "Encountered a problem with sending tag: " + message,
        Toast.LENGTH_LONG
    ).show();
}

Upvotes: 8

Views: 22560

Answers (7)

NANDINI MAURYA
NANDINI MAURYA

Reputation: 11

Pass the message from other class using function parameter

public void showToast(String message) {

Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();

}

Upvotes: 0

Guest123
Guest123

Reputation: 11

It worked for me with :

Toast.makeText(this.getContext(), R.string.title, Toast.LENGTH_LONG).show();

Upvotes: 1

Vimalathithan A
Vimalathithan A

Reputation: 50

Need to pass the context to the showToastMessage(String message)

Like this showToastMessage(String message, Context context)

//then in my Application class

public void showToastMessage(String message, Context context){

            Toast.makeText(context, "Encountered a problem with sending tag: " + message, Toast.LENGTH_LONG).show();

    }

Upvotes: 1

ashish
ashish

Reputation: 217

Toast.makeText(getActivity(), "Index....."+index, Toast.LENGTH_LONG).show();

Upvotes: 0

kalyan pvs
kalyan pvs

Reputation: 14590

First create Application class like this..

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();
    }

}

call this method from any of your class like ApplicationContext.showToast("your string");

be careful about context object leaking..

Upvotes: 6

Shahar
Shahar

Reputation: 3692

There are two ways you can do that, if you have a valid context, you can do it like @CapDroid wrote:

public static void showToastWithTitle(String title) {
    Toast.makeText(getApplicationContext(), title, Toast.LENGTH_LONG).show();
}

if you don't, you can send a Context as well,

public static void showToastWithTitleAndContext(Context context, String title) {
    Toast.makeText(context, title, Toast.LENGTH_LONG).show();
}

Note that you can define a static Context in your Application.java and use it to call shoh toast.

hope that helps.

Upvotes: 6

Niranj Patel
Niranj Patel

Reputation: 33248

Write this method in your Application Class. You just need to pass message in parameter from any Activity.

public void showToast(String message)
{
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}

Upvotes: 4

Related Questions