2017-08-14 18 views
0

私はこのサイトを初めて利用していますので、うまくいけば私の質問を正しく表現しています。Javaトーストで非静的メソッドを呼び出す

私はいくつかの入門Androidプログラミングを行っています。私はToast.makeTextメソッドに電話することができますが、直後のsetGravityメソッドでは同じことができません。最初の非静的メソッドを参照できますが、次のメソッドは参照できません。私は匿名の内部クラスを使うのも初めてです。

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

私はあなたのスコアで見ることができます。 「うまくいけば私の質問を正しく表現している」 [Help> Ask](https://stackoverflow.com/help/asking) – wtsang02

+0

を参照してください。coz makeTextは静的メソッドであり、setGravityは –

答えて

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

makeTextリターントーストオブジェクト。

1

あなたは

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

ではありません。ドキュメントから、Toastのためにpublicコンストラクタを使用しないでくださいあなたが 'setView(View)'でレイアウトを定義しようとしている場合を除きます。使用するカスタムレイアウトがない場合は、 'makeText(Context、int、int)'を使用してトーストを作成する必要があります。 –

+0

更新された回答... – androidnoobdev

0

静的メソッドは、そのクラス名を使用してアクセスすることができトーストクラスのオブジェクトを作成する必要があります。次のようになります。Classname.staticMethod();

したがって、Toastクラスでは、makeText()メソッドとsetGravity()メソッドがあります。しかし、makeText()メソッドは静的メソッドです。クラス名でアクセスすることができます。ちょうど以下のように:

Toast.makeText() 

しかし、setGravity()メソッドは静的メソッドではありません。したがって、クラス名を使用して呼び出すことはできません。

setGravity()メソッドを呼び出す必要がある場合は、Toastクラスのオブジェクトを作成する必要があります。

Toast t = new Toast(getContext()); 
t.setDuration(Toast.LENGTH_SHORT); 
t.setText(message); 
t.setGravity(Gravity.CENTER, 0, 0); 
t.show(); 
関連する問題