2017-08-14 80 views
0

我對這個網站很陌生,所以希望我正確地解決了我的問題。用Java調用非靜態方法Toasts

我正在通過一些介紹性的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> Asking](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'除非你打算用'setView(View)'定義佈局。如果您沒有使用自定義佈局,則必須使用'makeText(Context,int,int)'創建Toast。 –

+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();