Comment afficher Toast dans Android?
-
29-09-2019 - |
Question
J'ai un curseur qui peut être tiré vers le haut puis il montre une carte. Je peux déplacer le curseur vers le haut et vers le bas pour masquer ou afficher la carte. Lorsque la carte est à l'avant, je peux gérer les événements tactiles sur cette carte. Chaque fois que je touche, un AsyncTask
est tiré au, il télécharge des données et fait un Toast
qui affiche les données. Bien que je commence la tâche sur événement touche pas de pain grillé est affiché, pas jusqu'à ce que je ferme le curseur. Lorsque le curseur est fermé et la carte ne s'affiche plus les affiche de Toast
.
Toutes les idées?
Eh bien démarrer la tâche
EDIT:
public boolean onTouchEvent(MotionEvent event, MapView mapView){
if (event.getAction() == 1) {
new TestTask(this).execute();
return true;
}else{
return false;
}
}
et onPostExecute
un toast
Toast.makeText(app.getBaseContext(),(String)data.result,
Toast.LENGTH_SHORT).show();
Dans la nouvelle TestTask(this)
, ceci est une référence à MapOverlay
et non à MapActivity
, cela a donc été le problème.
La solution
Pour afficher Toast dans votre application, essayez ceci:
Toast.makeText(getActivity(), (String)data.result,
Toast.LENGTH_LONG).show();
Un autre exemple:
Toast.makeText(getActivity(), "This is my Toast message!",
Toast.LENGTH_LONG).show();
On peut définir deux constantes pour la durée:
int LENGTH_LONG Afficher la vue ou la notification de texte pour une longue période du temps.
int LENGTH_SHORT Afficher la vue ou la notification de texte pour une courte période du temps.
Personnalisation de votre pain grillé
LayoutInflater myInflater = LayoutInflater.from(this);
View view = myInflater.inflate(R.layout.your_custom_layout, null);
Toast mytoast = new Toast(this);
mytoast.setView(view);
mytoast.setDuration(Toast.LENGTH_LONG);
mytoast.show();
Autres conseils
L'extension des activités en utilisant baseadapter
utilisé cette
Toast.makeText(getActivity(),
"Your Message", Toast.LENGTH_LONG).show();
ou si vous utilisez l'activité ou mainactivity
Toast.makeText(MainActivity.this,
"Your Message", Toast.LENGTH_LONG).show();
Syntaxe
Toast.makeText(context, text, duration);
Paramètre Valeur
contexte
getApplicationContext()
-. Retourne le contexte de toutes les activités en cours d'exécution dans l'application
getBaseContext()
-. Si vous voulez contexte d'accès d'un autre contexte dans l'application, vous pouvez accéder à
getContext()
-. Retourne la vue contexte que l'activité de fonctionnement courant
text
text
-. Retour "Chaîne", sinon la chaîne vous pouvez utiliser transtypage
(string)num // type caste
Durée
Toast.LENGTH_SHORT
- Toast retard prédéfini 2000 ms
Toast.LENGTH_LONG
- retard Toast 3500 ms prédéfinie
milisecond
- utilisateur à retard Toast définis millisecondes (. Par exemple 4000)
exemple1
Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();
Example.2
Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
Toaster dans Android
Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_SHORT).show();
ou
Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_LONG).show();
(LENGTH_SHORT et LENGTH_LONG agissent comme des drapeaux booléens - ce qui signifie que vous cant envoyé des toasts à minuterie miliseconds, mais vous devez utiliser l'une de ces 2 options)
Vous pouvez personnaliser votre Tost:
LayoutInflater mInflater=LayoutInflater.from(this);
View view=mInflater.inflate(R.layout.your_layout_file,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
Ou façon générale:
Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
J'ai essayé plusieurs toasts et pour ceux qui leur pain donne les essayer d'erreur
Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();
Il y a deux façons de le faire.
Soit utiliser le message de Toast intégré
//Toast shown for short period of time
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_SHORT).show();
//Toast shown for long period of time
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_LONG).show();
ou faire une personnalisée en fournissant le fichier de mise en page personnalisée
Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
Je couru à travers les réponses ici, et a été attirée par le fait qu'il semble être quelqu'un farfouillé, estimant que le contexte d'activité est nécessaire. Ce n'est pas le cas. Cependant, il est une exigence qu'un Toast est affiché à partir de l'événement principal ou l'interface utilisateur de cette discussion. Donc, pour que cela fonctionne en dehors d'un contexte d'activité est un peu délicat. Voici un exemple qui fonctionnerait à l'intérieur d'un service système ou une classe potentielle qui, finalement, hérite de Context
.
public class MyService extends AccessibilityService {
public void postToastMessage(final String message) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}
});
}
}
Notez que nous ne consultons pas besoin d'une instance de Activity
pour que cela fonctionne. S'il vous plaît arrêter ce qui suggère que c'est le cas! Si Activity
était nécessaire, la signature de la méthode ne serait pas appel à un Context
.
Si ce fragment de,
Toast.makeText(getActivity(), "this is my Toast message!!! =)",
Toast.LENGTH_LONG).show();
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();
au lieu d'utiliser "app.getBaseContext ()".
Vous pouvez essayer d'utiliser " getApplicationContext () " ou " getContext () ".
Si votre code est en activité, alors vous devriez utiliser « cette » de « Activty.this ».
Si votre code est en fragment alors vous devriez aller pour « getActivity () »
Pour afficher Toast utiliser le code suivant:
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
Toast toast=Toast.makeText(getApplicationContext(),"Hello", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0); // last two args are X and Y are used for setting position
toast.setDuration(10000);//you can even use milliseconds to display toast
toast.show();**//showing the toast is important**
Simple Way
toast("Your Message")
ou
toast(R.string.some_message)
Il suffit d'ajouter deux méthodes dans votre BaseActivity
. Ou créer un nouveau BaseActivity
si vous n'êtes pas déjà utilisé.
public class BaseActivity extends AppCompatActivity {
public void toast(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
public void toast(@StringRes int msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}
et étendre toutes vos activités par BaseActivity
.
public class MainActivity extends BaseActivity
Simplest chemin! (À afficher dans votre activité principale, remplacer Premier argument pour une autre activité)
Button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
}
}
Cela a fonctionné pour moi:
Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();
Si vous voulez écrire un toast simple dans votre activité:
Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();
1.Showing TextView dans Toast: ---
TextView tv = new TextView(this);
tv.setText("Hello!");
tv.setTextSize(30);
tv.setTextColor(Color.RED);
tv.setBackgroundColor(Color.YELLOW);
2.Showing image comme Toast: -
ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.blonde);
Toast t = new Toast(this);
t.setView(iv);
t.setDuration(Toast.LENGTH_LONG);
t.show();
Mise en page en 3.showing Toast: -
LayoutInflater li = getLayoutInflater();
View view = li.inflate(R.layout.my_toast_layout,null,false);
Toast t = new Toast(this);
t.setView(view);
t.setDuration(Toast.LENGTH_LONG);
t.show();
** Si vous voulez écrire le pain grillé dans votre Async alors:
private Activity activity;
private android.content.Context context;
this.activity = activity;
this.context = context;
Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();
Afficher Toast de service
public class ServiceA extends Service {
//....
public void showToast(final String message) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getContext(), message, Toast.LENGTH_LONG).show();
}
});
}
//....
}
Vous pouvez aussi mettre méthode showToast
dans votre classe d'application, et de montrer des toasts de partout.
Voici un autre:
refreshBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
}
});
Où Toast
est:
Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
& strings.xml
:
<string name="refresh_btn_pushed">"Refresh was Clicked..."</string>
devez lire: Android Toast Exemple
Syntaxe
Toast.makeText(context, text, duration);
Vous pouvez utiliser getApplicationContext () ou getActivity () ou MainActivity.this (si le nom Activité est MainActivity)
Toast.makeText(getApplicationContext(),"Hi I am toast",Toast.LENGTH_LONG).show();
ou
Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();