J'ai un curseur qui peut être tiré vers le haut, puis il montre une carte. Je peux déplacer le curseur de haut en bas pour masquer ou afficher la carte. Lorsque la carte est au premier plan, je peux gérer les événements tactiles sur cette carte. Chaque fois que je touche, une AsyncTask
est activée, elle télécharge des données et crée une Toast
qui affiche les données. Bien que je commence la tâche sur un événement tactile, aucun pain grillé n'est affiché, pas avant que je ferme le curseur. Lorsque le curseur est fermé et que la carte n'est plus affichée, la variable Toast
apparaît.
Des idées?
Bien commencer la tâche
MODIFIER:
public boolean onTouchEvent(MotionEvent event, MapView mapView){
if (event.getAction() == 1) {
new TestTask(this).execute();
return true;
}else{
return false;
}
}
et dans onPostExecute
porter un toast
Toast.makeText(app.getBaseContext(),(String)data.result,
Toast.LENGTH_SHORT).show();
Dans new TestTask(this)
, il s’agit d’une référence à MapOverlay
et non à MapActivity
, c’était donc le problème.
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();
Nous pouvons définir deux constantes pour la durée:
int LENGTH_LONG Affiche la notification d'affichage ou de texte pour une longue période de temps.
int LENGTH_SHORT Affiche la notification d'affichage ou de texte pour une courte période de temps.
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();
L'extension d'activité en utilisant baseadapter
a utilisé ceci
Toast.makeText(getActivity(),
"Your Message", Toast.LENGTH_LONG).show();
ou si vous utilisez activité ou mainactivity
Toast.makeText(MainActivity.this,
"Your Message", Toast.LENGTH_LONG).show();
Toast.makeText(context, text, duration);
getApplicationContext()
- Retourne le contexte pour toutes les activités en cours d'exécution dans l'application.
getBaseContext()
- Si vous souhaitez accéder au contexte à partir d'un autre contexte de l'application, vous pouvez y accéder.
getContext()
- Renvoie la vue contextuelle uniquement l'activité en cours.
text
- Retourne "STRING", Si non string, vous pouvez utiliser le transtypage.
(string)num // type caste
Toast.LENGTH_SHORT
- Toast delay 2000 ms prédéfini
Toast.LENGTH_LONG
- Toast delay 3500 ms prédéfini
milisecond
- délai de grillage défini par l'utilisateur en millisecondes (par ex. 4000)
Exemple 1
Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();
Exemple.2
Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
Toast 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 indicateurs booléens - ce qui signifie que vous ne pouvez pas envoyer de toast timer en millisecondes, 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 manière générale:
Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
J'ai essayé plusieurs toasts et pour ceux que leur toast leur donne l'erreur d'essayer
Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();
Il y a deux façons de le faire.
Utilisez le message 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 créer un personnalisé en fournissant un fichier de présentation personnalisé
Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
J'ai trouvé les réponses ici et j'ai été attiré par le fait qu'il semble y avoir quelqu'un qui fouille, croyant qu'un contexte d'activité est requis. Ce n'est pas le cas. Cependant, il est obligatoire qu'un Toast soit publié à partir de l'événement principal ou du fil de l'interface utilisateur. Donc, faire en sorte 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 de toute classe potentielle qui hériterait 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 n’avons pas besoin d’accéder à une instance de Activity
pour que cela fonctionne. Arrêtez de suggérer que c'est le cas! Si Activity
était requis, la signature de la méthode n'appellerait pas Context
.
Si c'est fragment,
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é, vous devez utiliser "this" de "Activty.this".
Si votre code est dans le fragment alors vous devriez aller pour "getActivity ()"
Pour afficher Toast, utilisez 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**
Syntaxe
Toast.makeText(context, text, duration);
Vous pouvez utiliser getApplicationContext () ou getActivity () ou MainActivity.this (si le nom de l'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();
Manière la plus simple! (Pour afficher dans votre activité principale, remplacez le premier argument par 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. Afficher TextView dans Toast: ---
TextView tv = new TextView(this);
tv.setText("Hello!");
tv.setTextSize(30);
tv.setTextColor(Color.RED);
tv.setBackgroundColor(Color.YELLOW);
2. Image montrant comme du pain grillé: -
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();
3.présentant la disposition en tant que pain grillé: -
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();
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 également mettre la méthode showToast
dans votre classe Application et afficher des toasts de n'importe où.