2017-08-14 2 views
0

Je suis nouveau sur ce site, je l'espère, je suis phrasé ma question correctement.Invoquer méthodes non statiques avec Java Toasts

Je travaille dans une programmation Android d'introduction. Ce qui me permet d'appeler la méthode Toast.makeText, mais je ne peux pas faire la même chose pour la méthode setGravity immédiatement après? Pourquoi puis-je référencer la première méthode non statique, mais pas la suivante? Je suis également nouveau à l'utilisation des classes internes anonymes.

mTrueButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Toast.makeText(quizActivity.this, R.string.correct_toast, Toast.LENGTH_SHORT.show(); 
     Toast.setGravity(0, 0 ,0); 
    } 
}); 
+0

'Je ne suis pas familier avec ce site', nous pouvons le voir en fonction de votre score. J'espère que je pose correctement ma question. , S'il vous plaît consulter le [Aide> Demander] (https://stackoverflow.com/help/asking) – wtsang02

+0

coz maketext est une méthode statique et setGravity n'est pas –

Répondre

0
Toast toast = Toast.makeText(getApplicationContext(), 
    "text", Toast.LENGTH_SHORT); 
toast.setGravity(Gravity.CENTER, 0, 0); 
toast.show(); 

makeText retour d'un objet de pain grillé.

1

Vous devez créer Toast objet de classe

public void ShowToast(String message){ 

    Toast t = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG); 

    OR 

    // Toast t = new Toast(getContext()); if custom view require 
    t.setDuration(Toast.LENGTH_LONG); 
    t.setText(message); 

    t.setGravity(Gravity.RIGHT,0,0); 
    t.show(); 

} 
+0

De la documentation, Ne pas utiliser le constructeur public pour un 'Toast' sauf si vous allez définir la mise en page avec 'setView (View)'. Si vous n'avez pas de disposition personnalisée à utiliser, vous devez utiliser 'makeText (Context, int, int)' pour créer le Toast. –

+0

Ok. Réponse mise à jour ... – androidnoobdev

0

Les méthodes statiques sont accessibles en utilisant leur nom de classe. Comme: Classname.staticMethod();

Donc, ici, dans la classe Toast, nous avons la méthode makeText() et la méthode setGravity(). Mais la méthode makeText() est une méthode statique. Donc, nous pouvons y accéder par leur nom de classe. Tout comme ci-dessous:

Toast.makeText() 

Mais setGravity() méthode n'est pas une méthode statique. Donc, nous ne pouvons pas l'appeler en utilisant leur nom de classe.

Si vous devez appeler la méthode setGravity(), vous devez créer un objet de la classe Toast.

Toast t = new Toast(getContext()); 
t.setDuration(Toast.LENGTH_SHORT); 
t.setText(message); 
t.setGravity(Gravity.CENTER, 0, 0); 
t.show();