Reputation: 7574
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
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
Reputation: 11
It worked for me with :
Toast.makeText(this.getContext(), R.string.title, Toast.LENGTH_LONG).show();
Upvotes: 1
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
Reputation: 217
Toast.makeText(getActivity(), "Index....."+index, Toast.LENGTH_LONG).show();
Upvotes: 0
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
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
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